[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-21 Thread Ulrich Müller
commit: f056aff905a29e9a5066c4138dc9c0a3e33df99b
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun Jun  8 14:57:50 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Jun 21 09:23:51 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=f056aff9

Cheat sheet: Remove EAPI 6 to make room for EAPI 9

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

 eapi-cheatsheet.tex | 156 ++--
 1 file changed, 78 insertions(+), 78 deletions(-)

diff --git a/eapi-cheatsheet.tex b/eapi-cheatsheet.tex
index 438f189..60bea45 100644
--- a/eapi-cheatsheet.tex
+++ b/eapi-cheatsheet.tex
@@ -77,10 +77,10 @@
 \footnote{\url{https://creativecommons.org/licenses/by-sa/4.0/}}
 \end{abstract}
 
-\section{EAPIs 0, 1, 2, 3, 4, and 5}
+\section{EAPIs 0 to 6}
 \label{sec:cs:eapi0-2}
-Omitted for lack of space. See version~5.0 of this document for
-differences between these previous EAPIs.
+Omitted for lack of space. See previous versions of this document for
+differences between these EAPIs.
 
 % \section{EAPI 0}
 % \label{sec:cs:eapi0}
@@ -327,81 +327,81 @@ differences between these previous EAPIs.
 % See \featureref{stablemask}.
 % \end{description}
 
-\section{EAPI 6 (2015-11-13)}
-\label{sec:cs:eapi6}
-\subsection{Additions/changes}
-\label{sec:cs:eapi6-additions}
-\begin{description}
-\item[Bash version] Ebuilds can use features of Bash version 4.2
-(was 3.2 before).
-See \featureref{bash-version}.
-\item[\code{failglob}] The \code{failglob} option of Bash is set
-in global scope, so that unintentional pattern expansion will be
-caught as an error.
-See \featureref{failglob}.
-\item[Locale settings] It is ensured that the behaviour of case
-modification and collation order for ASCII characters
-(\code{LC_CTYPE} and \code{LC_COLLATE}) are the same as in the
-POSIX locale.
-See \featureref{locale-settings}.
-\item[\code{src_prepare}] This phase function has a default now,
-which applies patches from the \code{PATCHES} variable with the
-new \code{eapply} command, and user-provided patches with
-\code{eapply_user}.
-See \featureref{src-prepare}.
-\item[\code{src_install}] The default implementation uses the new
-\code{einstalldocs} function for installing documentation.
-See \featureref{src-install}.
-\item[\code{nonfatal die}] When \code{die} or \code{assert} are
-called under the \code{nonfatal} command and with the \code{-n}
-option, they will not abort the build process but return with an
-error.
-See \featureref{nonfatal-die}.
-\item[\code{unpack} changes] \code{unpack} has been extended:
-\begin{description}
-\item[Pathnames] Both absolute paths and paths relative to the
-working directory are accepted as arguments.
-See \featureref{unpack-absolute}.
-\item[\code{.txz} files] Suffix \code{.txz} for xz compressed
-tarballs is recognised.
-See \featureref{unpack-extensions}.
-\item[Filename case] Character case of filename extensions is
-ignored.
-See \featureref{unpack-ignore-case}.
-\end{description}
-\item[\code{econf} changes] Options \code{-{}-docdir} and
-\code{-{}-htmldir} are passed to \code{configure}, in addition to
-the existing options.
-See \featureref{econf-options}.
-\item[\code{eapply}] The \code{eapply} command is a simplified
-substitute for \code{epatch}, implemented in the package manager.
-The patches from its file or directory arguments are applied using
-\code{patch -p1}.
-See \featureref{eapply}.
-\item[\code{eapply_user}] The \code{eapply_user} command permits
-the package manager to apply user-provided patches. It must be
-called from every \code{src_prepare} function.
-See \featureref{eapply-user}.
-\item[\code{einstalldocs}] The \code{einstalldocs} function will
-install the files specified by the \code{DOCS} variable (or a
-default set of files if \code{DOCS} is unset) and by the
-\code{HTML_DOCS} variable.
-See \featureref{einstalldocs}.
-\item[\code{in_iuse}] The \code{in_iuse} function returns
-true if the USE flag given as its argument is available in the
-ebuild for USE queries.
-See \featureref{in-iuse}.
-\item[\code{get_libdir}] The \code{get_libdir} command outputs
-the \code{lib*} directory basename suitable for the current ABI\@.
-See \featureref{get-libdir}.
-\end{description}
-\subsection{Removals/bans}
-\label{sec:cs:eapi6-removalsbans}
-\begin{description}
-\item[\code{einstall}] No longer allowed. Use \code{emake install}
-as replacement.
-See \featureref{banned-commands}.
-\end{description}
+% \section{EAPI 6 (2015-11-13)}
+% \label{sec:cs:eapi6}
+% \subsection{Additions/changes}
+% \label{sec:cs:eapi6-additions}
+% \begin{description}
+% \item[Bash version] Ebuilds can use features of Bash version 4.2
+

[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-21 Thread Ulrich Müller
commit: 81f1d2a00e4a12971a53f21da8ce642975cd6473
Author: Ulrich Müller  gentoo  org>
AuthorDate: Mon Jan 13 21:14:36 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Jun 21 09:23:47 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=81f1d2a0

EAPI 9: Special profile variables are no longer exported

Bug: https://bugs.gentoo.org/948001
Signed-off-by: Ulrich Müller  gentoo.org>

 ebuild-env-vars.tex   | 12 
 profile-variables.tex |  2 ++
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 434cef9..5d0bc9b 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -18,6 +18,12 @@ unexported shell variables, as specified for EAPIs in 
table~\ref{tab:export-vars
 the package manager must pass those that are required by ebuild-specific 
external commands
 (see section~\ref{sec:pkg-mgr-commands}) in an implementation-defined manner.
 
+Variables listed in section~\ref{sec:specific-profile-vars} as having specific 
meanings or special
+handling, and that are set in the active profiles' \t{make.defaults} files, 
obey the same export
+rules specified for EAPIs in table~\ref{tab:export-vars}. To clarify, this 
behaviour is governed
+by the EAPI of the ebuild, not that of the profile. Except where otherwise 
noted, all other
+variables set in the active profiles' \t{make.defaults} files must be exported 
to the environment.
+
 \ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs with variables exported to the environment}
 \label{tab:export-vars}
@@ -354,10 +360,8 @@ the package manager must pass those that are required by 
ebuild-specific externa
 \end{tabular}
 \end{centertable}
 
-Except where otherwise noted, all variables set in the active profiles' 
\t{make.defaults} files must
-be exported to the ebuild environment. \t{CHOST}, \t{CBUILD} and \t{CTARGET}, 
if not set by
-profiles, must contain either an appropriate machine tuple (the definition of 
appropriate is beyond
-the scope of this specification) or be unset.
+\t{CHOST}, \t{CBUILD} and \t{CTARGET}, if not set by profiles, must contain 
either an appropriate
+machine tuple (the definition of appropriate is beyond the scope of this 
specification) or be unset.
 
 \t{PATH} must be initialized by the package manager to a ``usable'' default.  
The exact value here
 is left up to interpretation, but it should include the equivalent ``sbin'' 
and ``bin'' and any

diff --git a/profile-variables.tex b/profile-variables.tex
index f20fde4..ddcbd3a 100644
--- a/profile-variables.tex
+++ b/profile-variables.tex
@@ -69,6 +69,8 @@ completely override those in parent profiles.
 \end{centertable}
 
 \subsection{Specific variables and their meanings}
+\label{sec:specific-profile-vars}
+
 The following variables have specific meanings when set in profiles.
 \begin{description}
 \item[ARCH] The system's architecture. Must be a value listed in 
\t{profiles/arch.list}; see



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-21 Thread Ulrich Müller
commit: 8c6fde0659bb899e5aa2aca4ef1c22800ff471c1
Author: Ulrich Müller  gentoo  org>
AuthorDate: Mon Jan 20 13:21:44 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Jun 21 09:23:49 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=8c6fde06

EAPI 9 has ver_replacing

Bug: https://bugs.gentoo.org/947530
Signed-off-by: Ulrich Müller  gentoo.org>

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 7cfffd4..d303322 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -180,6 +180,9 @@ Controllable stripping & \compactfeatureref{dostrip} &
 \t{ver_*} commands & \compactfeatureref{ver-commands} &
 No & Yes & Yes & Yes \\
 
+\t{ver_replacing} & \compactfeatureref{ver-replacing} &
+No & No & No & Yes \\
+
 \t{unpack} support for \t{7z} & \compactfeatureref{unpack-extensions} &
 Yes & Yes & No & No \\
 
@@ -380,6 +383,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item \t{assert} banned, \featureref{banned-commands}.
 \item \t{domo} banned, \featureref{banned-commands}.
 \item \t{pipestatus}, \featureref{pipestatus}.
+\item \t{ver_replacing}, \featureref{ver-replacing}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index a2a1935..6944c6e 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -1101,20 +1101,32 @@ the second, inclusively.
 
 Both version strings must conform to the version specification in
 section~\ref{sec:version-spec}. Comparison is done using 
algorithm~\ref{alg:version-comparison}.
+
+\item[ver_replacing] \featurelabel{ver-replacing} Takes an operator and a 
version string as
+arguments, which follow the same specification as in \t{ver_test}. 
Iterates over the elements
+of \t{REPLACING_VERSIONS}, using \t{ver_test} to compare each element 
against the version
+string. Returns shell true (0) if the specified relation holds for any 
element, shell false (1)
+otherwise. Note that if \t{REPLACING_VERSIONS} is empty, shell false is 
returned.
+
+Only available in EAPIs listed in table~\ref{tab:version-commands} as 
supporting
+\t{ver_replacing}. The command is only meaningful in phases where 
\t{REPLACING_VERSIONS} is
+defined.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting version manipulation commands}
 \label{tab:version-commands}
-\begin{tabular}{}
+\begin{tabular}{l}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{c}{\textbf{\t{ver_cut}?}} &
   \multicolumn{1}{c}{\textbf{\t{ver_rs}?}} &
-  \multicolumn{1}{c}{\textbf{\t{ver_test}?}} \\
+  \multicolumn{1}{c}{\textbf{\t{ver_test}?}} &
+  \multicolumn{1}{c}{\textbf{\t{ver_replacing}?}} \\
   \midrule
-  0, 1, 2, 3, 4, 5, 6 & No  & No  & No  \\
-  7, 8, 9 & Yes & Yes & Yes \\
+  0, 1, 2, 3, 4, 5, 6 & No  & No  & No  & No  \\
+  7, 8& Yes & Yes & Yes & No  \\
+  9   & Yes & Yes & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-21 Thread Ulrich Müller
commit: 8185cb0ee7642d859d746559363bdaed6f2fd9c6
Author: Ulrich Müller  gentoo  org>
AuthorDate: Mon May 12 18:14:14 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Jun 21 09:23:50 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=8185cb0e

EAPI 9 has edo

Bug: https://bugs.gentoo.org/744880
Signed-off-by: Ulrich Müller  gentoo.org>

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index d303322..be95fbe 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -192,6 +192,9 @@ Controllable stripping & \compactfeatureref{dostrip} &
 \t{unpack} support for \t{rar} & \compactfeatureref{unpack-extensions} &
 Yes & Yes & No & No \\
 
+\t{edo} & \compactfeatureref{edo} &
+No & No & No & Yes \\
+
 \end{longtable}
 
 \chapter{Differences between EAPIs}
@@ -384,6 +387,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item \t{domo} banned, \featureref{banned-commands}.
 \item \t{pipestatus}, \featureref{pipestatus}.
 \item \t{ver_replacing}, \featureref{ver-replacing}.
+\item \t{edo}, \featureref{edo}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 6944c6e..a4f4b8e 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -1301,21 +1301,32 @@ has returned.
 \end{algorithmic}
 \end{algorithm}
 
+\item[edo] \featurelabel{edo} Takes one or more arguments. The entire argument 
list is output
+as an informational message to stderr; individual tokens may be reformatted to 
avoid ambiguity.
+The first argument is then executed as a command, with the remaining arguments 
passed to it.
+If the command fails, \t{edo} aborts the build process using \t{die}, unless 
it was called under
+\t{nonfatal}, in which case it returns a non-zero exit status.
+
+\t{edo} must be implemented internally as a shell function. Only available in 
EAPIs listed in
+table~\ref{tab:misc-commands} as supporting \t{edo}.
+
 \end{description}
 
 \ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Misc commands for EAPIs}
 \label{tab:misc-commands}
-\begin{tabular}{}
+\begin{tabular}{l}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{c}{\textbf{\t{default}?}} &
   \multicolumn{1}{c}{\textbf{\t{einstalldocs}?}} &
-  \multicolumn{1}{c}{\textbf{\t{get_libdir}?}} \\
+  \multicolumn{1}{c}{\textbf{\t{get_libdir}?}} &
+  \multicolumn{1}{c}{\textbf{\t{edo}?}} \\
   \midrule
-  0, 1  & No  & No  & No  \\
-  2, 3, 4, 5& Yes & No  & No  \\
-  6, 7, 8, 9& Yes & Yes & Yes \\
+  0, 1  & No  & No  & No  & No  \\
+  2, 3, 4, 5& Yes & No  & No  & No  \\
+  6, 7, 8   & Yes & Yes & Yes & No  \\
+  9 & Yes & Yes & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-21 Thread Ulrich Müller
commit: fd096b853b4dae0834e6e899c345ec11711e0bce
Author: Ulrich Müller  gentoo  org>
AuthorDate: Mon May 12 18:13:01 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Jun 21 09:23:48 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=fd096b85

EAPI 9 bans domo

Bug: https://bugs.gentoo.org/951502
Signed-off-by: Ulrich Müller  gentoo.org>

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index abaaf52..dd3d03e 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -129,6 +129,9 @@ GNU \t{patch} version & \compactfeatureref{gnu-patch} &
 \t{assert} & \compactfeatureref{banned-commands} &
 Yes & Yes & Yes & Banned \\
 
+\t{domo} & \compactfeatureref{banned-commands} &
+Yes & Yes & Yes & Banned \\
+
 Query command options & \compactfeatureref{pm-query-options} &
 \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} & \t{-b}, \t{-d}, \t{-r} & 
\t{-b}, \t{-d}, \t{-r} \\
 
@@ -372,6 +375,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item Bash version is 5.2, \featureref{bash-version}.
 \item Variables no longer exported, \featureref{export-vars}.
 \item \t{assert} banned, \featureref{banned-commands}.
+\item \t{domo} banned, \featureref{banned-commands}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 3dfc3e1..c977d00 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -81,11 +81,12 @@ called, the package manager must abort the build process 
indicating an error.
   \multicolumn{1}{c}{\textbf{\t{useq}}} &
   \multicolumn{1}{c}{\textbf{\t{hasv}}} &
   \multicolumn{1}{c}{\textbf{\t{hasq}}} &
-  \multicolumn{1}{c}{\textbf{\t{assert}}} & & \\
+  \multicolumn{1}{c}{\textbf{\t{assert}}} &
+  \multicolumn{1}{c}{\textbf{\t{domo}}} & \\
   \midrule
-  0, 1, 2, 3, 4, 5, 6, 7  & No  & No  & No  & No  & & \\
-  8   & Yes & Yes & Yes & No  & & \\
-  9   & Yes & Yes & Yes & Yes & & \\
+  0, 1, 2, 3, 4, 5, 6, 7  & No  & No  & No  & No  & No  & \\
+  8   & Yes & Yes & Yes & No  & No  & \\
+  9   & Yes & Yes & Yes & Yes & Yes & \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -589,6 +590,8 @@ the current phase function has returned.
 is the package name with \t{.mo} appended. Failure behaviour is EAPI 
dependent as per
 section~\ref{sec:failure-behaviour}. The locale tree location is EAPI 
dependent as per
 table~\ref{tab:domo-path}.
+In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as per
+section~\ref{sec:banned-commands}.
 
 \item[dosbin] As \t{dobin}, but installs to \t{DESTTREE/sbin}.
 



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-21 Thread Ulrich Müller
commit: e4269e8d4f2a3f9e77693f9c454403b3b38c022b
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun Jun  8 16:41:33 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Jun 21 09:23:51 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=e4269e8d

Cheat sheet: Update for EAPI 9

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

 eapi-cheatsheet.tex | 48 +++-
 1 file changed, 47 insertions(+), 1 deletion(-)

diff --git a/eapi-cheatsheet.tex b/eapi-cheatsheet.tex
index 60bea45..e3e29da 100644
--- a/eapi-cheatsheet.tex
+++ b/eapi-cheatsheet.tex
@@ -15,7 +15,7 @@
 \usepackage[local]{gitinfo2}
 \newcommand{\code}[1]{\texttt{#1}}
 % This should reflect the latest approved EAPI version
-\newcommand{\version}{8.0}
+\newcommand{\version}{9.0}
 \newcommand{\featureref}[1]{\textsc{#1} on page~\pageref{feat:#1}}
 \renewcommand{\familydefault}{\sfdefault}
 \urlstyle{sf}
@@ -577,6 +577,52 @@ differences between these EAPIs.
 and LHA archives. See \featureref{unpack-extensions}.
 \end{description}
 
+\section{EAPI 9}
+\label{sec:cs:eapi9}
+\subsection{Additions/changes}
+\label{sec:cs:eapi9-additions}
+\begin{description}
+\item[Default EAPI for profiles] Profile directories without their
+own \code{eapi} file no longer default to EAPI 0, but to the EAPI
+specified in the top-level \code{profiles} directory.
+See \featureref{profile-eapi-default}.
+\item[\code{use.stable} and \code{package.use.stable}]
+Profile dirs may contain two new files. They can be used to
+override the USE flags specified by \code{make.defaults}, but act
+only on packages that would be merged due to a stable keyword.
+See \featureref{use-stable}.
+\item[Bash version] Ebuilds can use features of Bash version 5.2
+(was 5.0 before). See \featureref{bash-version}.
+\item[Variables are no longer exported] The package manager no
+longer exports its defined shell variables (exceptions are
+\code{TMPDIR} and \code{HOME}) to the environment. The same
+applies to variables defined in \code{make.defaults} that have
+specific meanings. See \featureref{export-vars}.
+\item[\code{pipestatus}] Checks if all commands in the last
+executed pipeline have returned an exit status of zero. When the
+\code{-v} option is specified, also prints the shell's pipe status
+array. See \featureref{pipestatus}.
+\item[\code{ver_replacing} \emph{op v2}] Checks if the relation
+\emph{v1 op v2} is true for any element \emph{v1} of
+\code{REPLACING_VERSIONS}\@. \emph{op} can be any operator that is
+accepted by \code{ver_test}. See \featureref{ver-replacing}.
+\item[\code{edo}] Outputs its entire argument list as an
+informational message, then executes it as a simple shell command,
+with standard failure behaviour. See \featureref{edo}.
+\item[Merging of symlinks] When merging \code{D} to \code{ROOT},
+absolute symlinks are now merged as-is. The package manager will
+no longer strip a leading \code{D} from their link targets.
+See \featureref{symlink-rewrite}.
+\end{description}
+\subsection{Removals/bans}
+\label{sec:cs:eapi9-removalsbans}
+\begin{description}
+\item[\code{assert}] No longer allowed. Use \code{pipestatus}
+instead. See \featureref{banned-commands}.
+\item[\code{domo}] No longer allowed. Use \code{insinto} and
+\code{newins} as replacement. See \featureref{banned-commands}.
+\end{description}
+
 \end{document}
 
 % vim: set filetype=tex fileencoding=utf8 et tw=70 spell spelllang=en :



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-21 Thread Ulrich Müller
commit: 711785439b5b2c693ac6db5c8d9981d21a04653b
Author: Ulrich Müller  gentoo  org>
AuthorDate: Thu Jun 20 18:16:12 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Jun 21 09:23:50 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=71178543

EAPI 9 no longer rewrites absolute symlinks

Bug: https://bugs.gentoo.org/934514
Signed-off-by: Ulrich Müller  gentoo.org>

 eapi-differences.tex |  4 
 merge.tex| 20 ++--
 2 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index be95fbe..13c1c38 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -195,6 +195,9 @@ Controllable stripping & \compactfeatureref{dostrip} &
 \t{edo} & \compactfeatureref{edo} &
 No & No & No & Yes \\
 
+Absolute symlink rewriting & \compactfeatureref{symlink-rewrite} &
+Yes & Yes & Yes & No \\
+
 \end{longtable}
 
 \chapter{Differences between EAPIs}
@@ -388,6 +391,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item \t{pipestatus}, \featureref{pipestatus}.
 \item \t{ver_replacing}, \featureref{ver-replacing}.
 \item \t{edo}, \featureref{edo}.
+\item Absolute symlinks no longer rewritten, \featureref{symlink-rewrite}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/merge.tex b/merge.tex
index 27b0ba8..f588d54 100644
--- a/merge.tex
+++ b/merge.tex
@@ -138,8 +138,24 @@ 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 target 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.
+In all other EAPIs, symlinks must be merged with their targets unmodified.
+
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{Rewriting of absolute symlinks in EAPIs}
+\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}
 



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-21 Thread Ulrich Müller
commit: 7ad9f38745b17484190e4892040afc6458399f02
Author: Ulrich Müller  gentoo  org>
AuthorDate: Fri Nov 29 16:06:26 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Jun 21 09:23:49 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=7ad9f387

EAPI 9 has pipestatus

Bug: https://bugs.gentoo.org/566342
Signed-off-by: Ulrich Müller  gentoo.org>

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index dd3d03e..7cfffd4 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -144,6 +144,9 @@ Output commands use stdout & 
\compactfeatureref{output-no-stdout} &
 \t{die} in subshell & \compactfeatureref{subshell-die} &
 No & Yes & Yes & Yes \\
 
+\t{pipestatus} & \compactfeatureref{pipestatus} &
+No & No & No & Yes \\
+
 \t{econf -{}-datarootdir} & \compactfeatureref{econf-options} &
 No & No & Yes & Yes \\
 
@@ -376,6 +379,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item Variables no longer exported, \featureref{export-vars}.
 \item \t{assert} banned, \featureref{banned-commands}.
 \item \t{domo} banned, \featureref{banned-commands}.
+\item \t{pipestatus}, \featureref{pipestatus}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index c977d00..a2a1935 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -206,6 +206,11 @@ completing. Ebuilds must not run any of these commands 
once the current phase fu
 failure), calls \t{die}, passing any parameters to it.
 In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as per
 section~\ref{sec:banned-commands}.
+\item[pipestatus] \featurelabel{pipestatus} Checks the shell's pipe status 
array, i.\,e.\ the exit
+status of the command(s) in the most recently executed foreground 
pipeline. Returns shell true
+(0) if all elements are zero, or the last non-zero element otherwise. If 
called with \t{-v}
+as the first argument, also outputs the pipe status array as a 
space-separated list.
+Only available in EAPIs listed in table~\ref{tab:pipestatus} as supporting 
\t{pipestatus}.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{9}
@@ -224,6 +229,20 @@ completing. Ebuilds must not run any of these commands 
once the current phase fu
 \end{tabular}
 \end{centertable}
 
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{EAPIs supporting \t{pipestatus}}
+\label{tab:pipestatus}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Supports \t{pipestatus}?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7, 8 & No  \\
+  9 & Yes \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \subsection{Patch commands}
 These commands are used during the \t{src_prepare} phase to apply patches to 
the package's sources.
 Ebuilds must not run any of these commands once the current phase function has 
returned.



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-21 Thread Ulrich Müller
commit: 864a7d33f65388bb67560ab50447145be9873533
Author: Ulrich Müller  gentoo  org>
AuthorDate: Fri Nov 29 16:02:56 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Jun 21 09:23:48 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=864a7d33

EAPI 9 bans assert

Bug: https://bugs.gentoo.org/566342
Signed-off-by: Ulrich Müller  gentoo.org>

 eapi-differences.tex |  4 
 pkg-mgr-commands.tex | 10 +++---
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 91c09a2..abaaf52 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -126,6 +126,9 @@ GNU \t{patch} version & \compactfeatureref{gnu-patch} &
 \t{hasq} & \compactfeatureref{banned-commands} &
 Yes & Yes & Banned & Banned \\
 
+\t{assert} & \compactfeatureref{banned-commands} &
+Yes & Yes & Yes & Banned \\
+
 Query command options & \compactfeatureref{pm-query-options} &
 \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} & \t{-b}, \t{-d}, \t{-r} & 
\t{-b}, \t{-d}, \t{-r} \\
 
@@ -368,6 +371,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item \t{use.stable} and \t{package.use.stable}, \featureref{use-stable}.
 \item Bash version is 5.2, \featureref{bash-version}.
 \item Variables no longer exported, \featureref{export-vars}.
+\item \t{assert} banned, \featureref{banned-commands}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 878d1eb..3dfc3e1 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -80,10 +80,12 @@ called, the package manager must abort the build process 
indicating an error.
   \multicolumn{1}{c}{} &
   \multicolumn{1}{c}{\textbf{\t{useq}}} &
   \multicolumn{1}{c}{\textbf{\t{hasv}}} &
-  \multicolumn{1}{c}{\textbf{\t{hasq}}} & & & \\
+  \multicolumn{1}{c}{\textbf{\t{hasq}}} &
+  \multicolumn{1}{c}{\textbf{\t{assert}}} & & \\
   \midrule
-  0, 1, 2, 3, 4, 5, 6, 7  & No  & No  & No  & & & \\
-  8, 9& Yes & Yes & Yes & & & \\
+  0, 1, 2, 3, 4, 5, 6, 7  & No  & No  & No  & No  & & \\
+  8   & Yes & Yes & Yes & No  & & \\
+  9   & Yes & Yes & Yes & Yes & & \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -201,6 +203,8 @@ completing. Ebuilds must not run any of these commands once 
the current phase fu
 environment.
 \item[assert] Checks the shell's pipe status array, and if any element is 
non-zero (indicating
 failure), calls \t{die}, passing any parameters to it.
+In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as per
+section~\ref{sec:banned-commands}.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{9}



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-21 Thread Ulrich Müller
commit: eb8cd5655298c13f8794de6efb5e02150afeeb37
Author: Ulrich Müller  gentoo  org>
AuthorDate: Tue Jan  7 17:09:52 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Jun 21 09:23:46 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=eb8cd565

Clarify use of the terms "export" and "environment variable"

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

 ebuild-env-vars.tex  | 12 ++--
 ebuild-functions.tex | 22 +++---
 ebuild-vars.tex  |  4 ++--
 3 files changed, 19 insertions(+), 19 deletions(-)

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 861dd48..268fa36 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -211,14 +211,14 @@ inconsistent variable.
 No &
 \featurelabel{desttree} Controls the location where \t{dobin}, \t{dolib}, 
\t{domo},
 and \t{dosbin} install things. Only for EAPIs listed in 
table~\ref{tab:removed-env-vars-table}
-as supporting \t{DESTTREE}\@. In all other EAPIs, this is retained as a 
conceptual variable not
-exported to the ebuild environment. \\
+as supporting \t{DESTTREE}\@. In all other EAPIs, this is retained as a 
conceptual variable
+inaccessible from the ebuild environment. \\
 \t{INSDESTTREE} &
 \t{src_install} &
 No &
 \featurelabel{insdesttree} Controls the location where \t{doins} installs 
things. Only for EAPIs
 listed in table~\ref{tab:removed-env-vars-table} as supporting 
\t{INSDESTTREE}\@. In all other
-EAPIs, this is retained as a conceptual variable not exported to the 
ebuild environment. \\
+EAPIs, this is retained as a conceptual variable inaccessible from the 
ebuild environment. \\
 \t{USE} &
 All &
 Yes &
@@ -373,11 +373,11 @@ This section discusses the handling of four variables:
 \begin{description}
 \item[IUSE] is the variable calculated from the \t{IUSE} values defined in 
ebuilds and eclasses.
 \item[IUSE_REFERENCEABLE] is a variable calculated from \t{IUSE} and a variety 
of other sources
-described below. It is purely a conceptual variable; it is not exported to 
the ebuild
+described below. It is purely a conceptual variable; it is inaccessible 
from the ebuild
 environment. Values in \t{IUSE_REFERENCEABLE} may legally be used in 
queries from other
 packages about an ebuild's state (for example, for use dependencies).
-\item[IUSE_EFFECTIVE] is another conceptual, unexported variable. Values in 
\t{IUSE_EFFECTIVE} are
-those which an ebuild may legally use in queries about itself (for 
example, for the \t{use}
+\item[IUSE_EFFECTIVE] is another conceptual, inaccessible variable. Values in 
\t{IUSE_EFFECTIVE}
+are those which an ebuild may legally use in queries about itself (for 
example, for the \t{use}
 function, and for use in dependency specification conditional blocks).
 \item[USE] is a variable calculated by the package manager and exported to the 
ebuild environment.
 \end{description}

diff --git a/ebuild-functions.tex b/ebuild-functions.tex
index 4308ea4..8f8668a 100644
--- a/ebuild-functions.tex
+++ b/ebuild-functions.tex
@@ -8,10 +8,10 @@ by the package manager as part of the build and/or install 
process. In all cases
 must provide a default implementation of these functions; unless otherwise 
stated this must be a
 no-op. All functions may assume that they have read access to all system 
libraries, binaries and
 configuration files that are accessible to normal users, as well as write 
access to the temporary
-directories specified by the \t{T}, \t{TMPDIR} and \t{HOME} environment 
variables
+directories specified by the \t{T}, \t{TMPDIR} and \t{HOME} variables
 (see section~\ref{sec:ebuild-env-vars}). Most functions must assume only that 
they have additional
-write access to the package's working directory (the \t{WORKDIR} environment 
variable); exceptions
-are noted below.
+write access to the package's working directory (the \t{WORKDIR} variable); 
exceptions are noted
+below.
 
 The environment for functions run outside of the build sequence (that is, 
\t{pkg_config},
 \t{pkg_info}, \t{pkg_prerm} and \t{pkg_postrm}) must be the environment used 
for the build of the
@@ -400,37 +400,37 @@ src_install() {
 
 The \t{pkg_preinst} function performs any special tasks that are required 
immediately before
 merging the package to the live filesystem. It must not write outside of the 
directories specified
-by the \t{ROOT} and \t{D} environment variables.
+by the \t{ROOT} and \t{D} variables.
 
 \t{pkg_preinst} must be run with full access to all files and directories 
below that specified by
-the \t{ROOT} and \t{D} environment variables.
+the \t{ROOT} and \t{D} variables.
 
 \subsection{pkg_postinst}
 
 The \t{pkg_postinst} function performs any special tasks that are required 
immediately after
 merging the package to the live filesystem. It must not write outside of the 
directory specified
-in the \t{ROOT} environment variable.
+in the \t{ROOT} variable.
 
 

[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-21 Thread Ulrich Müller
commit: 8148f1da9336a1c6d7eadb89b90aebd35d6718a1
Author: Ulrich Müller  gentoo  org>
AuthorDate: Tue Jan  7 17:13:28 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Jun 21 09:23:47 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=8148f1da

EAPI 9: Defined variables are no longer exported

Bug: https://bugs.gentoo.org/721088
Signed-off-by: Ulrich Müller  gentoo.org>

 eapi-differences.tex |  4 
 ebuild-env-vars.tex  | 36 +---
 ebuild-vars.tex  |  4 
 3 files changed, 37 insertions(+), 7 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 7243e1f..91c09a2 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -75,6 +75,9 @@ Accumulate \t{PROPERTIES} & 
\compactfeatureref{accumulate-vars} &
 Accumulate \t{RESTRICT} & \compactfeatureref{accumulate-vars} &
 No & No & Yes & Yes \\
 
+Export variables & \compactfeatureref{export-vars} &
+Yes & Yes & Yes & No \\
+
 \t{PORTDIR} & \compactfeatureref{portdir} &
 Yes & No & No & No \\
 
@@ -364,6 +367,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item Different default EAPI for profiles, \featureref{profile-eapi-default}.
 \item \t{use.stable} and \t{package.use.stable}, \featureref{use-stable}.
 \item Bash version is 5.2, \featureref{bash-version}.
+\item Variables no longer exported, \featureref{export-vars}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 268fa36..434cef9 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -1,10 +1,10 @@
 \section{Defined variables}
 \label{sec:ebuild-env-vars}
 
-The package manager must define the following environment variables. Not all 
variables are
-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.
+The package manager must define the following variables. Not all variables are 
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}).
@@ -12,6 +12,26 @@ For example, \t{EBUILD_PHASE} is different for every phase, 
and \t{ROOT} may hav
 the various different \t{pkg_*} phases. Ebuilds must recalculate any variable 
they derive from an
 inconsistent variable.
 
+\featurelabel{export-vars} These variables are either exported to the 
environment or kept as
+unexported shell variables, as specified for EAPIs in 
table~\ref{tab:export-vars}; exceptions are
+\t{TMPDIR} and \t{HOME} which are always exported. In EAPIs where variables 
are not exported,
+the package manager must pass those that are required by ebuild-specific 
external commands
+(see section~\ref{sec:pkg-mgr-commands}) in an implementation-defined manner.
+
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{EAPIs with variables exported to the environment}
+\label{tab:export-vars}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Variables exported?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7, 8 & Yes \\
+  9 & No  \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \begin{landscape}
 % Reduce width of text area to make room for margin notes
 \addtolength{\hsize}{-25mm}
@@ -168,13 +188,15 @@ inconsistent variable.
 \t{TMPDIR} &
 All &
 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. \\
+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{TMPDIR} is always
+exported to the environment. \\
 \t{HOME} &
 All &
 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. \\
+ebuild that may read or modify the home directory. \t{HOME} is always 
exported to the
+environment. \\
 \t{EPREFIX} &
 All &
 Yes &

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index b030943..9979ce9 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -335,6 +335,10 @@ defined based upon any variant condition.}
 \end{tabular}
 \end{centertable}
 
+For EAPIs listed in table~\ref{tab:export-vars} with the property that 
variables are not exported,
+the package manager must not export any of the v

[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-21 Thread Ulrich Müller
commit: fa8ad1081bbd5a76ddde237c66b972d0dc10b9d4
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sat Jan 11 09:47:19 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Jun 21 09:23:46 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=fa8ad108

EAPI 9: Bash version is 5.2

Bug: https://bugs.gentoo.org/946193
Signed-off-by: Ulrich Müller  gentoo.org>

 eapi-differences.tex | 3 ++-
 ebuild-format.tex| 3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 88be303..7243e1f 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -48,7 +48,7 @@ Profile files as directories & 
\compactfeatureref{profile-file-dirs} &
 No & No & No & Yes \\
 
 Bash version & \compactfeatureref{bash-version} &
-4.2 & 4.2 & 5.0 & 5.0 \\
+4.2 & 4.2 & 5.0 & 5.2 \\
 
 Selective URI restrictions & \compactfeatureref{uri-restrict} &
 No & No & Yes & Yes \\
@@ -363,6 +363,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \begin{compactitem}
 \item Different default EAPI for profiles, \featureref{profile-eapi-default}.
 \item \t{use.stable} and \t{package.use.stable}, \featureref{use-stable}.
+\item Bash version is 5.2, \featureref{bash-version}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/ebuild-format.tex b/ebuild-format.tex
index 844f01a..a543013 100644
--- a/ebuild-format.tex
+++ b/ebuild-format.tex
@@ -32,7 +32,8 @@ 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, 9  & 5.0 & Yes \\
+  8 & 5.0 & Yes \\
+  9 & 5.2 & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-21 Thread Ulrich Müller
commit: 9e0e015cdc1557f5c1718b475cc0cb6dbea45ea1
Author: Ulrich Müller  gentoo  org>
AuthorDate: Tue Aug  3 16:32:47 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Jun 21 09:23:44 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=9e0e015c

Add an EAPI 9 identical to EAPI 8

Signed-off-by: Ulrich Müller  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 c1f7d6a..ce6e670 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 

[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-21 Thread Ulrich Müller
commit: 99ab9ba8c9aed707479751d23e5a8ba46604217e
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sat May 17 06:33:24 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Jun 21 09:23:45 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=99ab9ba8

EAPI 9 has use.stable and package.use.stable

Bug: https://bugs.gentoo.org/955833
Signed-off-by: Ulrich Müller  gentoo.org>

 eapi-differences.tex |  7 +++
 profiles.tex | 34 ++
 2 files changed, 41 insertions(+)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index f6aafe7..88be303 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,12 @@ Profile files as directories & 
\compactfeatureref{profile-file-dirs} &
 \t{package.provided} & \compactfeatureref{package-provided} &
 Optional & No & No & No \\
 
+\t{use.stable} & \compactfeatureref{use-stable} &
+No & No & No & Yes \\
+
+\t{package.use.stable} & \compactfeatureref{use-stable} &
+No & No & No & Yes \\
+
 Bash version & \compactfeatureref{bash-version} &
 4.2 & 4.2 & 5.0 & 5.0 \\
 
@@ -356,6 +362,7 @@ EAPI 9 is EAPI 8 with the following changes:
 
 \begin{compactitem}
 \item Different default EAPI for profiles, \featureref{profile-eapi-default}.
+\item \t{use.stable} and \t{package.use.stable}, \featureref{use-stable}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/profiles.tex b/profiles.tex
index d814c31..864fa05 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -165,6 +165,40 @@ specification, and then a space delimited list of USE 
flags to enable. A USE fla
 specification is limited to the forms defined by the directory's EAPI\@. In 
some EAPIs,
 \t{package.use} can be a directory instead of a regular file as per 
section~\ref{sec:line-stacking}.
 
+\subsection{use.stable and package.use.stable}
+\featurelabel{use-stable} The \t{use.stable} and \t{package.use.stable} files 
may be used to
+override the default USE flags specified by \t{make.defaults}. They only apply 
to packages that
+are merged due to a stable keyword in the sense of section~\ref{sec:keywords}. 
Each line in
+\t{use.stable} contains a USE flag to enable; the \t{-flag} syntax indicates 
that the flag should
+be disabled. The \t{package.use.stable} file uses the same format as 
\t{package.use}.
+\t{USE_EXPAND} values may be enabled or disabled by using 
\t{expand_name_value}.
+
+Stable restrictions are applied exactly when the following condition holds: If 
every stable keyword
+in \t{KEYWORDS} were replaced with its tilde-prefixed counterpart (see 
section~\ref{sec:keywords}),
+then the resulting \t{KEYWORDS} setting would prevent installation of the 
package.
+
+If a flag appears in more than one of \t{package.use}, \t{use.stable} and 
\t{package.use.stable},
+then \t{package.use.stable} takes precedence over \t{package.use}, which in 
turn takes precedence
+over \t{use.stable}.
+
+These files are supported in EAPIs as per table~\ref{tab:profile-use-stable}. 
They can be
+directories instead of regular files as per section~\ref{sec:line-stacking}.
+
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{EAPIs supporting \t{use.stable} and \t{package.use.stable} 
in profiles}
+\label{tab:profile-use-stable}
+\begin{tabular}{lll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Supports \t{use.stable}?}} &
+  \multicolumn{1}{c}{\textbf{Supports \t{package.use.stable}?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7, 8 & No  & No  \\
+  9 & Yes & Yes \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \subsection{USE masking and forcing}
 \label{sec:use-masking}
 This section covers the eight files \t{use.mask}, \t{use.force}, 
\t{use.stable.mask},



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-21 Thread Ulrich Müller
commit: 398a94c8aa6ce9e03b68ff8847d4bd108b7e8675
Author: Ulrich Müller  gentoo  org>
AuthorDate: Mon Feb 21 18:32:43 2022 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Jun 21 09:23:44 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=398a94c8

EAPI 9 profile EAPI defaults to top-level

Bug: https://bugs.gentoo.org/806181
Signed-off-by: Ulrich Müller  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 fbe375e..d814c31 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



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-16 Thread Ulrich Müller
commit: 85362425f2847d38d86bbd318dbc4d198020431b
Author: Ulrich Müller  gentoo  org>
AuthorDate: Tue Jan  7 17:13:28 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Jun 16 17:14:48 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=85362425

EAPI 9: Defined variables are no longer exported

Bug: https://bugs.gentoo.org/721088
Signed-off-by: Ulrich Müller  gentoo.org>

 eapi-differences.tex |  4 
 ebuild-env-vars.tex  | 36 +---
 ebuild-vars.tex  |  4 
 3 files changed, 37 insertions(+), 7 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 7243e1f..91c09a2 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -75,6 +75,9 @@ Accumulate \t{PROPERTIES} & 
\compactfeatureref{accumulate-vars} &
 Accumulate \t{RESTRICT} & \compactfeatureref{accumulate-vars} &
 No & No & Yes & Yes \\
 
+Export variables & \compactfeatureref{export-vars} &
+Yes & Yes & Yes & No \\
+
 \t{PORTDIR} & \compactfeatureref{portdir} &
 Yes & No & No & No \\
 
@@ -364,6 +367,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item Different default EAPI for profiles, \featureref{profile-eapi-default}.
 \item \t{use.stable} and \t{package.use.stable}, \featureref{use-stable}.
 \item Bash version is 5.2, \featureref{bash-version}.
+\item Variables no longer exported, \featureref{export-vars}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 268fa36..434cef9 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -1,10 +1,10 @@
 \section{Defined variables}
 \label{sec:ebuild-env-vars}
 
-The package manager must define the following environment variables. Not all 
variables are
-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.
+The package manager must define the following variables. Not all variables are 
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}).
@@ -12,6 +12,26 @@ For example, \t{EBUILD_PHASE} is different for every phase, 
and \t{ROOT} may hav
 the various different \t{pkg_*} phases. Ebuilds must recalculate any variable 
they derive from an
 inconsistent variable.
 
+\featurelabel{export-vars} These variables are either exported to the 
environment or kept as
+unexported shell variables, as specified for EAPIs in 
table~\ref{tab:export-vars}; exceptions are
+\t{TMPDIR} and \t{HOME} which are always exported. In EAPIs where variables 
are not exported,
+the package manager must pass those that are required by ebuild-specific 
external commands
+(see section~\ref{sec:pkg-mgr-commands}) in an implementation-defined manner.
+
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{EAPIs with variables exported to the environment}
+\label{tab:export-vars}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Variables exported?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7, 8 & Yes \\
+  9 & No  \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \begin{landscape}
 % Reduce width of text area to make room for margin notes
 \addtolength{\hsize}{-25mm}
@@ -168,13 +188,15 @@ inconsistent variable.
 \t{TMPDIR} &
 All &
 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. \\
+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{TMPDIR} is always
+exported to the environment. \\
 \t{HOME} &
 All &
 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. \\
+ebuild that may read or modify the home directory. \t{HOME} is always 
exported to the
+environment. \\
 \t{EPREFIX} &
 All &
 Yes &

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index b030943..9979ce9 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -335,6 +335,10 @@ defined based upon any variant condition.}
 \end{tabular}
 \end{centertable}
 
+For EAPIs listed in table~\ref{tab:export-vars} with the property that 
variables are not exported,
+the package manager must not export any of the v

[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-16 Thread Ulrich Müller
commit: 77c4d8a11c2d06054fa7721d25bfbaeaf981e92b
Author: Ulrich Müller  gentoo  org>
AuthorDate: Fri Nov 29 16:02:56 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Jun 16 17:14:49 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=77c4d8a1

EAPI 9 bans assert

Bug: https://bugs.gentoo.org/566342
Signed-off-by: Ulrich Müller  gentoo.org>

 eapi-differences.tex |  4 
 pkg-mgr-commands.tex | 10 +++---
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 91c09a2..abaaf52 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -126,6 +126,9 @@ GNU \t{patch} version & \compactfeatureref{gnu-patch} &
 \t{hasq} & \compactfeatureref{banned-commands} &
 Yes & Yes & Banned & Banned \\
 
+\t{assert} & \compactfeatureref{banned-commands} &
+Yes & Yes & Yes & Banned \\
+
 Query command options & \compactfeatureref{pm-query-options} &
 \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} & \t{-b}, \t{-d}, \t{-r} & 
\t{-b}, \t{-d}, \t{-r} \\
 
@@ -368,6 +371,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item \t{use.stable} and \t{package.use.stable}, \featureref{use-stable}.
 \item Bash version is 5.2, \featureref{bash-version}.
 \item Variables no longer exported, \featureref{export-vars}.
+\item \t{assert} banned, \featureref{banned-commands}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 878d1eb..3dfc3e1 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -80,10 +80,12 @@ called, the package manager must abort the build process 
indicating an error.
   \multicolumn{1}{c}{} &
   \multicolumn{1}{c}{\textbf{\t{useq}}} &
   \multicolumn{1}{c}{\textbf{\t{hasv}}} &
-  \multicolumn{1}{c}{\textbf{\t{hasq}}} & & & \\
+  \multicolumn{1}{c}{\textbf{\t{hasq}}} &
+  \multicolumn{1}{c}{\textbf{\t{assert}}} & & \\
   \midrule
-  0, 1, 2, 3, 4, 5, 6, 7  & No  & No  & No  & & & \\
-  8, 9& Yes & Yes & Yes & & & \\
+  0, 1, 2, 3, 4, 5, 6, 7  & No  & No  & No  & No  & & \\
+  8   & Yes & Yes & Yes & No  & & \\
+  9   & Yes & Yes & Yes & Yes & & \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -201,6 +203,8 @@ completing. Ebuilds must not run any of these commands once 
the current phase fu
 environment.
 \item[assert] Checks the shell's pipe status array, and if any element is 
non-zero (indicating
 failure), calls \t{die}, passing any parameters to it.
+In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as per
+section~\ref{sec:banned-commands}.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{9}



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-16 Thread Ulrich Müller
commit: ba0272b2f4390fd1d4eba0079889633781554dc3
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun Jun  8 14:57:50 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Jun 16 17:14:52 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=ba0272b2

Cheat sheet: Remove EAPI 6 to make room for EAPI 9

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

 eapi-cheatsheet.tex | 156 ++--
 1 file changed, 78 insertions(+), 78 deletions(-)

diff --git a/eapi-cheatsheet.tex b/eapi-cheatsheet.tex
index 438f189..60bea45 100644
--- a/eapi-cheatsheet.tex
+++ b/eapi-cheatsheet.tex
@@ -77,10 +77,10 @@
 \footnote{\url{https://creativecommons.org/licenses/by-sa/4.0/}}
 \end{abstract}
 
-\section{EAPIs 0, 1, 2, 3, 4, and 5}
+\section{EAPIs 0 to 6}
 \label{sec:cs:eapi0-2}
-Omitted for lack of space. See version~5.0 of this document for
-differences between these previous EAPIs.
+Omitted for lack of space. See previous versions of this document for
+differences between these EAPIs.
 
 % \section{EAPI 0}
 % \label{sec:cs:eapi0}
@@ -327,81 +327,81 @@ differences between these previous EAPIs.
 % See \featureref{stablemask}.
 % \end{description}
 
-\section{EAPI 6 (2015-11-13)}
-\label{sec:cs:eapi6}
-\subsection{Additions/changes}
-\label{sec:cs:eapi6-additions}
-\begin{description}
-\item[Bash version] Ebuilds can use features of Bash version 4.2
-(was 3.2 before).
-See \featureref{bash-version}.
-\item[\code{failglob}] The \code{failglob} option of Bash is set
-in global scope, so that unintentional pattern expansion will be
-caught as an error.
-See \featureref{failglob}.
-\item[Locale settings] It is ensured that the behaviour of case
-modification and collation order for ASCII characters
-(\code{LC_CTYPE} and \code{LC_COLLATE}) are the same as in the
-POSIX locale.
-See \featureref{locale-settings}.
-\item[\code{src_prepare}] This phase function has a default now,
-which applies patches from the \code{PATCHES} variable with the
-new \code{eapply} command, and user-provided patches with
-\code{eapply_user}.
-See \featureref{src-prepare}.
-\item[\code{src_install}] The default implementation uses the new
-\code{einstalldocs} function for installing documentation.
-See \featureref{src-install}.
-\item[\code{nonfatal die}] When \code{die} or \code{assert} are
-called under the \code{nonfatal} command and with the \code{-n}
-option, they will not abort the build process but return with an
-error.
-See \featureref{nonfatal-die}.
-\item[\code{unpack} changes] \code{unpack} has been extended:
-\begin{description}
-\item[Pathnames] Both absolute paths and paths relative to the
-working directory are accepted as arguments.
-See \featureref{unpack-absolute}.
-\item[\code{.txz} files] Suffix \code{.txz} for xz compressed
-tarballs is recognised.
-See \featureref{unpack-extensions}.
-\item[Filename case] Character case of filename extensions is
-ignored.
-See \featureref{unpack-ignore-case}.
-\end{description}
-\item[\code{econf} changes] Options \code{-{}-docdir} and
-\code{-{}-htmldir} are passed to \code{configure}, in addition to
-the existing options.
-See \featureref{econf-options}.
-\item[\code{eapply}] The \code{eapply} command is a simplified
-substitute for \code{epatch}, implemented in the package manager.
-The patches from its file or directory arguments are applied using
-\code{patch -p1}.
-See \featureref{eapply}.
-\item[\code{eapply_user}] The \code{eapply_user} command permits
-the package manager to apply user-provided patches. It must be
-called from every \code{src_prepare} function.
-See \featureref{eapply-user}.
-\item[\code{einstalldocs}] The \code{einstalldocs} function will
-install the files specified by the \code{DOCS} variable (or a
-default set of files if \code{DOCS} is unset) and by the
-\code{HTML_DOCS} variable.
-See \featureref{einstalldocs}.
-\item[\code{in_iuse}] The \code{in_iuse} function returns
-true if the USE flag given as its argument is available in the
-ebuild for USE queries.
-See \featureref{in-iuse}.
-\item[\code{get_libdir}] The \code{get_libdir} command outputs
-the \code{lib*} directory basename suitable for the current ABI\@.
-See \featureref{get-libdir}.
-\end{description}
-\subsection{Removals/bans}
-\label{sec:cs:eapi6-removalsbans}
-\begin{description}
-\item[\code{einstall}] No longer allowed. Use \code{emake install}
-as replacement.
-See \featureref{banned-commands}.
-\end{description}
+% \section{EAPI 6 (2015-11-13)}
+% \label{sec:cs:eapi6}
+% \subsection{Additions/changes}
+% \label{sec:cs:eapi6-additions}
+% \begin{description}
+% \item[Bash version] Ebuilds can use features of Bash version 4.2
+

[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-16 Thread Ulrich Müller
commit: b238f500a6e814ffbdfb9b88b176964d06250b2f
Author: Ulrich Müller  gentoo  org>
AuthorDate: Fri Nov 29 16:06:26 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Jun 16 17:14:50 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=b238f500

EAPI 9 has pipestatus

Bug: https://bugs.gentoo.org/566342
Signed-off-by: Ulrich Müller  gentoo.org>

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index dd3d03e..7cfffd4 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -144,6 +144,9 @@ Output commands use stdout & 
\compactfeatureref{output-no-stdout} &
 \t{die} in subshell & \compactfeatureref{subshell-die} &
 No & Yes & Yes & Yes \\
 
+\t{pipestatus} & \compactfeatureref{pipestatus} &
+No & No & No & Yes \\
+
 \t{econf -{}-datarootdir} & \compactfeatureref{econf-options} &
 No & No & Yes & Yes \\
 
@@ -376,6 +379,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item Variables no longer exported, \featureref{export-vars}.
 \item \t{assert} banned, \featureref{banned-commands}.
 \item \t{domo} banned, \featureref{banned-commands}.
+\item \t{pipestatus}, \featureref{pipestatus}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index c977d00..a2a1935 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -206,6 +206,11 @@ completing. Ebuilds must not run any of these commands 
once the current phase fu
 failure), calls \t{die}, passing any parameters to it.
 In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as per
 section~\ref{sec:banned-commands}.
+\item[pipestatus] \featurelabel{pipestatus} Checks the shell's pipe status 
array, i.\,e.\ the exit
+status of the command(s) in the most recently executed foreground 
pipeline. Returns shell true
+(0) if all elements are zero, or the last non-zero element otherwise. If 
called with \t{-v}
+as the first argument, also outputs the pipe status array as a 
space-separated list.
+Only available in EAPIs listed in table~\ref{tab:pipestatus} as supporting 
\t{pipestatus}.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{9}
@@ -224,6 +229,20 @@ completing. Ebuilds must not run any of these commands 
once the current phase fu
 \end{tabular}
 \end{centertable}
 
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{EAPIs supporting \t{pipestatus}}
+\label{tab:pipestatus}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Supports \t{pipestatus}?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7, 8 & No  \\
+  9 & Yes \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \subsection{Patch commands}
 These commands are used during the \t{src_prepare} phase to apply patches to 
the package's sources.
 Ebuilds must not run any of these commands once the current phase function has 
returned.



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-16 Thread Ulrich Müller
commit: 5cfb92502744ad862c7c4b863eb9bca191fefe27
Author: Ulrich Müller  gentoo  org>
AuthorDate: Thu Jun 20 18:16:12 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Jun 16 17:14:52 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=5cfb9250

EAPI 9 no longer rewrites absolute symlinks

Bug: https://bugs.gentoo.org/934514
Signed-off-by: Ulrich Müller  gentoo.org>

 eapi-differences.tex |  4 
 merge.tex| 20 ++--
 2 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index be95fbe..13c1c38 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -195,6 +195,9 @@ Controllable stripping & \compactfeatureref{dostrip} &
 \t{edo} & \compactfeatureref{edo} &
 No & No & No & Yes \\
 
+Absolute symlink rewriting & \compactfeatureref{symlink-rewrite} &
+Yes & Yes & Yes & No \\
+
 \end{longtable}
 
 \chapter{Differences between EAPIs}
@@ -388,6 +391,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item \t{pipestatus}, \featureref{pipestatus}.
 \item \t{ver_replacing}, \featureref{ver-replacing}.
 \item \t{edo}, \featureref{edo}.
+\item Absolute symlinks no longer rewritten, \featureref{symlink-rewrite}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/merge.tex b/merge.tex
index 27b0ba8..bef2c0c 100644
--- a/merge.tex
+++ b/merge.tex
@@ -138,8 +138,24 @@ 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 target 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.
+In all other EAPIs, symlinks must be merged with their targets unmodified.
+
+\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}
 



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-16 Thread Ulrich Müller
commit: 140b1eb3b7438c1b2b4ec159fe55b4affbd59925
Author: Ulrich Müller  gentoo  org>
AuthorDate: Mon Jan 20 13:21:44 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Jun 16 17:14:51 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=140b1eb3

EAPI 9 has ver_replacing

Bug: https://bugs.gentoo.org/947530
Signed-off-by: Ulrich Müller  gentoo.org>

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 7cfffd4..d303322 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -180,6 +180,9 @@ Controllable stripping & \compactfeatureref{dostrip} &
 \t{ver_*} commands & \compactfeatureref{ver-commands} &
 No & Yes & Yes & Yes \\
 
+\t{ver_replacing} & \compactfeatureref{ver-replacing} &
+No & No & No & Yes \\
+
 \t{unpack} support for \t{7z} & \compactfeatureref{unpack-extensions} &
 Yes & Yes & No & No \\
 
@@ -380,6 +383,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item \t{assert} banned, \featureref{banned-commands}.
 \item \t{domo} banned, \featureref{banned-commands}.
 \item \t{pipestatus}, \featureref{pipestatus}.
+\item \t{ver_replacing}, \featureref{ver-replacing}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index a2a1935..6944c6e 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -1101,20 +1101,32 @@ the second, inclusively.
 
 Both version strings must conform to the version specification in
 section~\ref{sec:version-spec}. Comparison is done using 
algorithm~\ref{alg:version-comparison}.
+
+\item[ver_replacing] \featurelabel{ver-replacing} Takes an operator and a 
version string as
+arguments, which follow the same specification as in \t{ver_test}. 
Iterates over the elements
+of \t{REPLACING_VERSIONS}, using \t{ver_test} to compare each element 
against the version
+string. Returns shell true (0) if the specified relation holds for any 
element, shell false (1)
+otherwise. Note that if \t{REPLACING_VERSIONS} is empty, shell false is 
returned.
+
+Only available in EAPIs listed in table~\ref{tab:version-commands} as 
supporting
+\t{ver_replacing}. The command is only meaningful in phases where 
\t{REPLACING_VERSIONS} is
+defined.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting version manipulation commands}
 \label{tab:version-commands}
-\begin{tabular}{}
+\begin{tabular}{l}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{c}{\textbf{\t{ver_cut}?}} &
   \multicolumn{1}{c}{\textbf{\t{ver_rs}?}} &
-  \multicolumn{1}{c}{\textbf{\t{ver_test}?}} \\
+  \multicolumn{1}{c}{\textbf{\t{ver_test}?}} &
+  \multicolumn{1}{c}{\textbf{\t{ver_replacing}?}} \\
   \midrule
-  0, 1, 2, 3, 4, 5, 6 & No  & No  & No  \\
-  7, 8, 9 & Yes & Yes & Yes \\
+  0, 1, 2, 3, 4, 5, 6 & No  & No  & No  & No  \\
+  7, 8& Yes & Yes & Yes & No  \\
+  9   & Yes & Yes & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-16 Thread Ulrich Müller
commit: 5394dd73d075e4dcf0ac193c19081a38d1f5e75f
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun Jun  8 16:41:33 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Jun 16 17:14:53 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=5394dd73

Cheat sheet: Update for EAPI 9

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

 eapi-cheatsheet.tex | 49 -
 1 file changed, 48 insertions(+), 1 deletion(-)

diff --git a/eapi-cheatsheet.tex b/eapi-cheatsheet.tex
index 60bea45..639d3f3 100644
--- a/eapi-cheatsheet.tex
+++ b/eapi-cheatsheet.tex
@@ -15,7 +15,7 @@
 \usepackage[local]{gitinfo2}
 \newcommand{\code}[1]{\texttt{#1}}
 % This should reflect the latest approved EAPI version
-\newcommand{\version}{8.0}
+\newcommand{\version}{9.0}
 \newcommand{\featureref}[1]{\textsc{#1} on page~\pageref{feat:#1}}
 \renewcommand{\familydefault}{\sfdefault}
 \urlstyle{sf}
@@ -577,6 +577,53 @@ differences between these EAPIs.
 and LHA archives. See \featureref{unpack-extensions}.
 \end{description}
 
+\section{EAPI 9}
+\label{sec:cs:eapi9}
+\subsection{Additions/changes}
+\label{sec:cs:eapi9-additions}
+\begin{description}
+\item[Default EAPI for profiles] Profile directories without their
+own \code{eapi} file no longer default to EAPI 0, but to the EAPI
+specified in the top-level \code{profiles} directory.
+See \featureref{profile-eapi-default}.
+\item[\code{use.stable} and \code{package.use.stable}] These are
+new files supported in profile directories. They may be used to
+override the default USE flags specified by \code{make.defaults},
+but act only on packages that would be merged due to a stable
+keyword. See \featureref{use-stable}.
+\item[Bash version] Ebuilds can use features of Bash version 5.2
+(was 5.0 before). See \featureref{bash-version}.
+\item[Variables are no longer exported] The package manager no
+longer exports its defined shell variables (exceptions are
+\code{TMPDIR} and \code{HOME}) to the environment. The same
+applies to variables defined in \code{make.defaults} that have
+specific meanings. See \featureref{export-vars}.
+\item[\code{pipestatus}] Checks the shell's pipe status array,
+i.\,e.\ the exit status of the command(s) in the last executed
+pipeline, and returns true if all elements are zero. It also
+prints the pipe status array when the \code{-v} option is given.
+See \featureref{pipestatus}.
+\item[\code{ver_replacing} \emph{op v2}] Checks if the relation
+\emph{v1 op v2} is true for any element \emph{v1} of
+\code{REPLACING_VERSIONS}\@. \emph{op} can be any operator that is
+accepted by \code{ver_test}. See \featureref{ver-replacing}.
+\item[\code{edo}] Outputs its entire argument list as an
+informational message, then executes it as a simple shell command,
+with standard failure behaviour. See \featureref{edo}.
+\item[Merging of symlinks] When merging \code{D} to \code{ROOT},
+absolute symlinks are now merged as-is. The package manager will
+no longer strip a leading \code{D} from their link targets.
+See \featureref{symlink-rewrite}.
+\end{description}
+\subsection{Removals/bans}
+\label{sec:cs:eapi9-removalsbans}
+\begin{description}
+\item[\code{assert}] No longer allowed. Use \code{pipestatus}
+instead. See \featureref{banned-commands}.
+\item[\code{domo}] No longer allowed. Use \code{insinto} and
+\code{newins} as replacement. See \featureref{banned-commands}.
+\end{description}
+
 \end{document}
 
 % vim: set filetype=tex fileencoding=utf8 et tw=70 spell spelllang=en :



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-16 Thread Ulrich Müller
commit: 81eeecf51c08fd5470297a8519bda5c3a7bb33e9
Author: Ulrich Müller  gentoo  org>
AuthorDate: Mon May 12 18:13:01 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Jun 16 17:14:50 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=81eeecf5

EAPI 9 bans domo

Bug: https://bugs.gentoo.org/951502
Signed-off-by: Ulrich Müller  gentoo.org>

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index abaaf52..dd3d03e 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -129,6 +129,9 @@ GNU \t{patch} version & \compactfeatureref{gnu-patch} &
 \t{assert} & \compactfeatureref{banned-commands} &
 Yes & Yes & Yes & Banned \\
 
+\t{domo} & \compactfeatureref{banned-commands} &
+Yes & Yes & Yes & Banned \\
+
 Query command options & \compactfeatureref{pm-query-options} &
 \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} & \t{-b}, \t{-d}, \t{-r} & 
\t{-b}, \t{-d}, \t{-r} \\
 
@@ -372,6 +375,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item Bash version is 5.2, \featureref{bash-version}.
 \item Variables no longer exported, \featureref{export-vars}.
 \item \t{assert} banned, \featureref{banned-commands}.
+\item \t{domo} banned, \featureref{banned-commands}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 3dfc3e1..c977d00 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -81,11 +81,12 @@ called, the package manager must abort the build process 
indicating an error.
   \multicolumn{1}{c}{\textbf{\t{useq}}} &
   \multicolumn{1}{c}{\textbf{\t{hasv}}} &
   \multicolumn{1}{c}{\textbf{\t{hasq}}} &
-  \multicolumn{1}{c}{\textbf{\t{assert}}} & & \\
+  \multicolumn{1}{c}{\textbf{\t{assert}}} &
+  \multicolumn{1}{c}{\textbf{\t{domo}}} & \\
   \midrule
-  0, 1, 2, 3, 4, 5, 6, 7  & No  & No  & No  & No  & & \\
-  8   & Yes & Yes & Yes & No  & & \\
-  9   & Yes & Yes & Yes & Yes & & \\
+  0, 1, 2, 3, 4, 5, 6, 7  & No  & No  & No  & No  & No  & \\
+  8   & Yes & Yes & Yes & No  & No  & \\
+  9   & Yes & Yes & Yes & Yes & Yes & \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -589,6 +590,8 @@ the current phase function has returned.
 is the package name with \t{.mo} appended. Failure behaviour is EAPI 
dependent as per
 section~\ref{sec:failure-behaviour}. The locale tree location is EAPI 
dependent as per
 table~\ref{tab:domo-path}.
+In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as per
+section~\ref{sec:banned-commands}.
 
 \item[dosbin] As \t{dobin}, but installs to \t{DESTTREE/sbin}.
 



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-16 Thread Ulrich Müller
commit: b4ed642f622f4171a5edcfcd9dbe667ee4bb1cd4
Author: Ulrich Müller  gentoo  org>
AuthorDate: Mon May 12 18:14:14 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Jun 16 17:14:51 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=b4ed642f

EAPI 9 has edo

Bug: https://bugs.gentoo.org/744880
Signed-off-by: Ulrich Müller  gentoo.org>

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index d303322..be95fbe 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -192,6 +192,9 @@ Controllable stripping & \compactfeatureref{dostrip} &
 \t{unpack} support for \t{rar} & \compactfeatureref{unpack-extensions} &
 Yes & Yes & No & No \\
 
+\t{edo} & \compactfeatureref{edo} &
+No & No & No & Yes \\
+
 \end{longtable}
 
 \chapter{Differences between EAPIs}
@@ -384,6 +387,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item \t{domo} banned, \featureref{banned-commands}.
 \item \t{pipestatus}, \featureref{pipestatus}.
 \item \t{ver_replacing}, \featureref{ver-replacing}.
+\item \t{edo}, \featureref{edo}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 6944c6e..a4f4b8e 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -1301,21 +1301,32 @@ has returned.
 \end{algorithmic}
 \end{algorithm}
 
+\item[edo] \featurelabel{edo} Takes one or more arguments. The entire argument 
list is output
+as an informational message to stderr; individual tokens may be reformatted to 
avoid ambiguity.
+The first argument is then executed as a command, with the remaining arguments 
passed to it.
+If the command fails, \t{edo} aborts the build process using \t{die}, unless 
it was called under
+\t{nonfatal}, in which case it returns a non-zero exit status.
+
+\t{edo} must be implemented internally as a shell function. Only available in 
EAPIs listed in
+table~\ref{tab:misc-commands} as supporting \t{edo}.
+
 \end{description}
 
 \ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Misc commands for EAPIs}
 \label{tab:misc-commands}
-\begin{tabular}{}
+\begin{tabular}{l}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{c}{\textbf{\t{default}?}} &
   \multicolumn{1}{c}{\textbf{\t{einstalldocs}?}} &
-  \multicolumn{1}{c}{\textbf{\t{get_libdir}?}} \\
+  \multicolumn{1}{c}{\textbf{\t{get_libdir}?}} &
+  \multicolumn{1}{c}{\textbf{\t{edo}?}} \\
   \midrule
-  0, 1  & No  & No  & No  \\
-  2, 3, 4, 5& Yes & No  & No  \\
-  6, 7, 8, 9& Yes & Yes & Yes \\
+  0, 1  & No  & No  & No  & No  \\
+  2, 3, 4, 5& Yes & No  & No  & No  \\
+  6, 7, 8   & Yes & Yes & Yes & No  \\
+  9 & Yes & Yes & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-16 Thread Ulrich Müller
commit: 6d511317807706d101dc29a172d59cf6c7bd9e71
Author: Ulrich Müller  gentoo  org>
AuthorDate: Mon Jan 13 21:14:36 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Jun 16 17:14:49 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=6d511317

EAPI 9: Special profile variables are no longer exported

Bug: https://bugs.gentoo.org/948001
Signed-off-by: Ulrich Müller  gentoo.org>

 ebuild-env-vars.tex   | 12 
 profile-variables.tex |  2 ++
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 434cef9..5d0bc9b 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -18,6 +18,12 @@ unexported shell variables, as specified for EAPIs in 
table~\ref{tab:export-vars
 the package manager must pass those that are required by ebuild-specific 
external commands
 (see section~\ref{sec:pkg-mgr-commands}) in an implementation-defined manner.
 
+Variables listed in section~\ref{sec:specific-profile-vars} as having specific 
meanings or special
+handling, and that are set in the active profiles' \t{make.defaults} files, 
obey the same export
+rules specified for EAPIs in table~\ref{tab:export-vars}. To clarify, this 
behaviour is governed
+by the EAPI of the ebuild, not that of the profile. Except where otherwise 
noted, all other
+variables set in the active profiles' \t{make.defaults} files must be exported 
to the environment.
+
 \ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs with variables exported to the environment}
 \label{tab:export-vars}
@@ -354,10 +360,8 @@ the package manager must pass those that are required by 
ebuild-specific externa
 \end{tabular}
 \end{centertable}
 
-Except where otherwise noted, all variables set in the active profiles' 
\t{make.defaults} files must
-be exported to the ebuild environment. \t{CHOST}, \t{CBUILD} and \t{CTARGET}, 
if not set by
-profiles, must contain either an appropriate machine tuple (the definition of 
appropriate is beyond
-the scope of this specification) or be unset.
+\t{CHOST}, \t{CBUILD} and \t{CTARGET}, if not set by profiles, must contain 
either an appropriate
+machine tuple (the definition of appropriate is beyond the scope of this 
specification) or be unset.
 
 \t{PATH} must be initialized by the package manager to a ``usable'' default.  
The exact value here
 is left up to interpretation, but it should include the equivalent ``sbin'' 
and ``bin'' and any

diff --git a/profile-variables.tex b/profile-variables.tex
index f20fde4..ddcbd3a 100644
--- a/profile-variables.tex
+++ b/profile-variables.tex
@@ -69,6 +69,8 @@ completely override those in parent profiles.
 \end{centertable}
 
 \subsection{Specific variables and their meanings}
+\label{sec:specific-profile-vars}
+
 The following variables have specific meanings when set in profiles.
 \begin{description}
 \item[ARCH] The system's architecture. Must be a value listed in 
\t{profiles/arch.list}; see



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-15 Thread Ulrich Müller
commit: 3ce3ba2d686a08caf15daa70e40d9dfec4c101bb
Author: Ulrich Müller  gentoo  org>
AuthorDate: Thu Jun 20 18:16:12 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Jun 15 11:33:39 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=3ce3ba2d

EAPI 9 no longer rewrites absolute symlinks

Bug: https://bugs.gentoo.org/934514
Signed-off-by: Ulrich Müller  gentoo.org>

 eapi-differences.tex |  4 
 merge.tex| 19 +--
 2 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index be95fbe..13c1c38 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -195,6 +195,9 @@ Controllable stripping & \compactfeatureref{dostrip} &
 \t{edo} & \compactfeatureref{edo} &
 No & No & No & Yes \\
 
+Absolute symlink rewriting & \compactfeatureref{symlink-rewrite} &
+Yes & Yes & Yes & No \\
+
 \end{longtable}
 
 \chapter{Differences between EAPIs}
@@ -388,6 +391,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item \t{pipestatus}, \featureref{pipestatus}.
 \item \t{ver_replacing}, \featureref{ver-replacing}.
 \item \t{edo}, \featureref{edo}.
+\item Absolute symlinks no longer 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}
 



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-15 Thread Ulrich Müller
commit: 35ac46a5a6fcd44c68971b92a1daaf2ad51a43e2
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun Jun  8 16:41:33 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Jun 15 11:33:40 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=35ac46a5

Cheat sheet: Update for EAPI 9

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

 eapi-cheatsheet.tex | 49 -
 1 file changed, 48 insertions(+), 1 deletion(-)

diff --git a/eapi-cheatsheet.tex b/eapi-cheatsheet.tex
index 60bea45..639d3f3 100644
--- a/eapi-cheatsheet.tex
+++ b/eapi-cheatsheet.tex
@@ -15,7 +15,7 @@
 \usepackage[local]{gitinfo2}
 \newcommand{\code}[1]{\texttt{#1}}
 % This should reflect the latest approved EAPI version
-\newcommand{\version}{8.0}
+\newcommand{\version}{9.0}
 \newcommand{\featureref}[1]{\textsc{#1} on page~\pageref{feat:#1}}
 \renewcommand{\familydefault}{\sfdefault}
 \urlstyle{sf}
@@ -577,6 +577,53 @@ differences between these EAPIs.
 and LHA archives. See \featureref{unpack-extensions}.
 \end{description}
 
+\section{EAPI 9}
+\label{sec:cs:eapi9}
+\subsection{Additions/changes}
+\label{sec:cs:eapi9-additions}
+\begin{description}
+\item[Default EAPI for profiles] Profile directories without their
+own \code{eapi} file no longer default to EAPI 0, but to the EAPI
+specified in the top-level \code{profiles} directory.
+See \featureref{profile-eapi-default}.
+\item[\code{use.stable} and \code{package.use.stable}] These are
+new files supported in profile directories. They may be used to
+override the default USE flags specified by \code{make.defaults},
+but act only on packages that would be merged due to a stable
+keyword. See \featureref{use-stable}.
+\item[Bash version] Ebuilds can use features of Bash version 5.2
+(was 5.0 before). See \featureref{bash-version}.
+\item[Variables are no longer exported] The package manager no
+longer exports its defined shell variables (exceptions are
+\code{TMPDIR} and \code{HOME}) to the environment. The same
+applies to variables defined in \code{make.defaults} that have
+specific meanings. See \featureref{export-vars}.
+\item[\code{pipestatus}] Checks the shell's pipe status array,
+i.\,e.\ the exit status of the command(s) in the last executed
+pipeline, and returns true if all elements are zero. It also
+prints the pipe status array when the \code{-v} option is given.
+See \featureref{pipestatus}.
+\item[\code{ver_replacing} \emph{op v2}] Checks if the relation
+\emph{v1 op v2} is true for any element \emph{v1} of
+\code{REPLACING_VERSIONS}\@. \emph{op} can be any operator that is
+accepted by \code{ver_test}. See \featureref{ver-replacing}.
+\item[\code{edo}] Outputs its entire argument list as an
+informational message, then executes it as a simple shell command,
+with standard failure behaviour. See \featureref{edo}.
+\item[Merging of symlinks] When merging \code{D} to \code{ROOT},
+absolute symlinks are now merged as-is. The package manager will
+no longer strip a leading \code{D} from their link targets.
+See \featureref{symlink-rewrite}.
+\end{description}
+\subsection{Removals/bans}
+\label{sec:cs:eapi9-removalsbans}
+\begin{description}
+\item[\code{assert}] No longer allowed. Use \code{pipestatus}
+instead. See \featureref{banned-commands}.
+\item[\code{domo}] No longer allowed. Use \code{insinto} and
+\code{newins} as replacement. See \featureref{banned-commands}.
+\end{description}
+
 \end{document}
 
 % vim: set filetype=tex fileencoding=utf8 et tw=70 spell spelllang=en :



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-15 Thread Ulrich Müller
commit: efc2e2dec63eec71999591f0d33323102dd2176e
Author: Ulrich Müller  gentoo  org>
AuthorDate: Mon May 12 18:14:14 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Jun 15 11:33:38 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=efc2e2de

EAPI 9 has edo

Bug: https://bugs.gentoo.org/744880
Signed-off-by: Ulrich Müller  gentoo.org>

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index d303322..be95fbe 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -192,6 +192,9 @@ Controllable stripping & \compactfeatureref{dostrip} &
 \t{unpack} support for \t{rar} & \compactfeatureref{unpack-extensions} &
 Yes & Yes & No & No \\
 
+\t{edo} & \compactfeatureref{edo} &
+No & No & No & Yes \\
+
 \end{longtable}
 
 \chapter{Differences between EAPIs}
@@ -384,6 +387,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item \t{domo} banned, \featureref{banned-commands}.
 \item \t{pipestatus}, \featureref{pipestatus}.
 \item \t{ver_replacing}, \featureref{ver-replacing}.
+\item \t{edo}, \featureref{edo}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index a49ab98..a4c59fa 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -1301,21 +1301,32 @@ has returned.
 \end{algorithmic}
 \end{algorithm}
 
+\item[edo] \featurelabel{edo} Takes one or more arguments. The entire argument 
list is output
+as an informational message to stderr; individual tokens may be reformatted to 
avoid ambiguity.
+The first argument is then executed as a command, with the remaining arguments 
passed to it.
+If the command fails, \t{edo} aborts the build process using \t{die}, unless 
it was called under
+\t{nonfatal}, in which case it returns a non-zero exit status.
+
+\t{edo} must be implemented internally as a shell function. Only available in 
EAPIs listed in
+table~\ref{tab:misc-commands} as supporting \t{edo}.
+
 \end{description}
 
 \ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Misc commands for EAPIs}
 \label{tab:misc-commands}
-\begin{tabular}{}
+\begin{tabular}{l}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{c}{\textbf{\t{default}?}} &
   \multicolumn{1}{c}{\textbf{\t{einstalldocs}?}} &
-  \multicolumn{1}{c}{\textbf{\t{get_libdir}?}} \\
+  \multicolumn{1}{c}{\textbf{\t{get_libdir}?}} &
+  \multicolumn{1}{c}{\textbf{\t{edo}?}} \\
   \midrule
-  0, 1  & No  & No  & No  \\
-  2, 3, 4, 5& Yes & No  & No  \\
-  6, 7, 8, 9& Yes & Yes & Yes \\
+  0, 1  & No  & No  & No  & No  \\
+  2, 3, 4, 5& Yes & No  & No  & No  \\
+  6, 7, 8   & Yes & Yes & Yes & No  \\
+  9 & Yes & Yes & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-15 Thread Ulrich Müller
commit: ca02f1e4b3240b5b95bdb78f0a5a07564b87b1ea
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun Jun  8 14:57:50 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Jun 15 11:33:39 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=ca02f1e4

Cheat sheet: Remove EAPI 6 to make room for EAPI 9

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

 eapi-cheatsheet.tex | 156 ++--
 1 file changed, 78 insertions(+), 78 deletions(-)

diff --git a/eapi-cheatsheet.tex b/eapi-cheatsheet.tex
index 438f189..60bea45 100644
--- a/eapi-cheatsheet.tex
+++ b/eapi-cheatsheet.tex
@@ -77,10 +77,10 @@
 \footnote{\url{https://creativecommons.org/licenses/by-sa/4.0/}}
 \end{abstract}
 
-\section{EAPIs 0, 1, 2, 3, 4, and 5}
+\section{EAPIs 0 to 6}
 \label{sec:cs:eapi0-2}
-Omitted for lack of space. See version~5.0 of this document for
-differences between these previous EAPIs.
+Omitted for lack of space. See previous versions of this document for
+differences between these EAPIs.
 
 % \section{EAPI 0}
 % \label{sec:cs:eapi0}
@@ -327,81 +327,81 @@ differences between these previous EAPIs.
 % See \featureref{stablemask}.
 % \end{description}
 
-\section{EAPI 6 (2015-11-13)}
-\label{sec:cs:eapi6}
-\subsection{Additions/changes}
-\label{sec:cs:eapi6-additions}
-\begin{description}
-\item[Bash version] Ebuilds can use features of Bash version 4.2
-(was 3.2 before).
-See \featureref{bash-version}.
-\item[\code{failglob}] The \code{failglob} option of Bash is set
-in global scope, so that unintentional pattern expansion will be
-caught as an error.
-See \featureref{failglob}.
-\item[Locale settings] It is ensured that the behaviour of case
-modification and collation order for ASCII characters
-(\code{LC_CTYPE} and \code{LC_COLLATE}) are the same as in the
-POSIX locale.
-See \featureref{locale-settings}.
-\item[\code{src_prepare}] This phase function has a default now,
-which applies patches from the \code{PATCHES} variable with the
-new \code{eapply} command, and user-provided patches with
-\code{eapply_user}.
-See \featureref{src-prepare}.
-\item[\code{src_install}] The default implementation uses the new
-\code{einstalldocs} function for installing documentation.
-See \featureref{src-install}.
-\item[\code{nonfatal die}] When \code{die} or \code{assert} are
-called under the \code{nonfatal} command and with the \code{-n}
-option, they will not abort the build process but return with an
-error.
-See \featureref{nonfatal-die}.
-\item[\code{unpack} changes] \code{unpack} has been extended:
-\begin{description}
-\item[Pathnames] Both absolute paths and paths relative to the
-working directory are accepted as arguments.
-See \featureref{unpack-absolute}.
-\item[\code{.txz} files] Suffix \code{.txz} for xz compressed
-tarballs is recognised.
-See \featureref{unpack-extensions}.
-\item[Filename case] Character case of filename extensions is
-ignored.
-See \featureref{unpack-ignore-case}.
-\end{description}
-\item[\code{econf} changes] Options \code{-{}-docdir} and
-\code{-{}-htmldir} are passed to \code{configure}, in addition to
-the existing options.
-See \featureref{econf-options}.
-\item[\code{eapply}] The \code{eapply} command is a simplified
-substitute for \code{epatch}, implemented in the package manager.
-The patches from its file or directory arguments are applied using
-\code{patch -p1}.
-See \featureref{eapply}.
-\item[\code{eapply_user}] The \code{eapply_user} command permits
-the package manager to apply user-provided patches. It must be
-called from every \code{src_prepare} function.
-See \featureref{eapply-user}.
-\item[\code{einstalldocs}] The \code{einstalldocs} function will
-install the files specified by the \code{DOCS} variable (or a
-default set of files if \code{DOCS} is unset) and by the
-\code{HTML_DOCS} variable.
-See \featureref{einstalldocs}.
-\item[\code{in_iuse}] The \code{in_iuse} function returns
-true if the USE flag given as its argument is available in the
-ebuild for USE queries.
-See \featureref{in-iuse}.
-\item[\code{get_libdir}] The \code{get_libdir} command outputs
-the \code{lib*} directory basename suitable for the current ABI\@.
-See \featureref{get-libdir}.
-\end{description}
-\subsection{Removals/bans}
-\label{sec:cs:eapi6-removalsbans}
-\begin{description}
-\item[\code{einstall}] No longer allowed. Use \code{emake install}
-as replacement.
-See \featureref{banned-commands}.
-\end{description}
+% \section{EAPI 6 (2015-11-13)}
+% \label{sec:cs:eapi6}
+% \subsection{Additions/changes}
+% \label{sec:cs:eapi6-additions}
+% \begin{description}
+% \item[Bash version] Ebuilds can use features of Bash version 4.2
+

[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-15 Thread Ulrich Müller
commit: cb832dbf6ada8622f1fcff9388b43bfbf742c0c9
Author: Ulrich Müller  gentoo  org>
AuthorDate: Mon Jan 20 13:21:44 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Jun 15 11:33:38 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=cb832dbf

EAPI 9 has ver_replacing

Bug: https://bugs.gentoo.org/947530
Signed-off-by: Ulrich Müller  gentoo.org>

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 7cfffd4..d303322 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -180,6 +180,9 @@ Controllable stripping & \compactfeatureref{dostrip} &
 \t{ver_*} commands & \compactfeatureref{ver-commands} &
 No & Yes & Yes & Yes \\
 
+\t{ver_replacing} & \compactfeatureref{ver-replacing} &
+No & No & No & Yes \\
+
 \t{unpack} support for \t{7z} & \compactfeatureref{unpack-extensions} &
 Yes & Yes & No & No \\
 
@@ -380,6 +383,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item \t{assert} banned, \featureref{banned-commands}.
 \item \t{domo} banned, \featureref{banned-commands}.
 \item \t{pipestatus}, \featureref{pipestatus}.
+\item \t{ver_replacing}, \featureref{ver-replacing}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index a2a1935..a49ab98 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -1101,20 +1101,32 @@ the second, inclusively.
 
 Both version strings must conform to the version specification in
 section~\ref{sec:version-spec}. Comparison is done using 
algorithm~\ref{alg:version-comparison}.
+
+\item[ver_replacing] \featurelabel{ver-replacing} Takes an operator and a 
version string as
+arguments, which follow the same specification as in \t{ver_test}. 
Iterates over the elements
+of \t{REPLACING_VERSIONS}, using \t{ver_test} to compare each element with 
the version string.
+Returns shell true (0) if the specified relation is fulfilled for any 
element. Note that if
+\t{REPLACING_VERSIONS} is empty, shell false (1) is returned.
+
+Only available in EAPIs listed in table~\ref{tab:version-commands} as 
supporting
+\t{ver_replacing}. The command is only meaningful in phases where 
\t{REPLACING_VERSIONS} is
+defined.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting version manipulation commands}
 \label{tab:version-commands}
-\begin{tabular}{}
+\begin{tabular}{l}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{c}{\textbf{\t{ver_cut}?}} &
   \multicolumn{1}{c}{\textbf{\t{ver_rs}?}} &
-  \multicolumn{1}{c}{\textbf{\t{ver_test}?}} \\
+  \multicolumn{1}{c}{\textbf{\t{ver_test}?}} &
+  \multicolumn{1}{c}{\textbf{\t{ver_replacing}?}} \\
   \midrule
-  0, 1, 2, 3, 4, 5, 6 & No  & No  & No  \\
-  7, 8, 9 & Yes & Yes & Yes \\
+  0, 1, 2, 3, 4, 5, 6 & No  & No  & No  & No  \\
+  7, 8& Yes & Yes & Yes & No  \\
+  9   & Yes & Yes & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-15 Thread Ulrich Müller
commit: a58386383ca7ad632d45dfcd9526eb18fcce1026
Author: Ulrich Müller  gentoo  org>
AuthorDate: Fri Nov 29 16:06:26 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Jun 15 11:33:37 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=a5838638

EAPI 9 has pipestatus

Bug: https://bugs.gentoo.org/566342
Signed-off-by: Ulrich Müller  gentoo.org>

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index dd3d03e..7cfffd4 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -144,6 +144,9 @@ Output commands use stdout & 
\compactfeatureref{output-no-stdout} &
 \t{die} in subshell & \compactfeatureref{subshell-die} &
 No & Yes & Yes & Yes \\
 
+\t{pipestatus} & \compactfeatureref{pipestatus} &
+No & No & No & Yes \\
+
 \t{econf -{}-datarootdir} & \compactfeatureref{econf-options} &
 No & No & Yes & Yes \\
 
@@ -376,6 +379,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item Variables no longer exported, \featureref{export-vars}.
 \item \t{assert} banned, \featureref{banned-commands}.
 \item \t{domo} banned, \featureref{banned-commands}.
+\item \t{pipestatus}, \featureref{pipestatus}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index c977d00..a2a1935 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -206,6 +206,11 @@ completing. Ebuilds must not run any of these commands 
once the current phase fu
 failure), calls \t{die}, passing any parameters to it.
 In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as per
 section~\ref{sec:banned-commands}.
+\item[pipestatus] \featurelabel{pipestatus} Checks the shell's pipe status 
array, i.\,e.\ the exit
+status of the command(s) in the most recently executed foreground 
pipeline. Returns shell true
+(0) if all elements are zero, or the last non-zero element otherwise. If 
called with \t{-v}
+as the first argument, also outputs the pipe status array as a 
space-separated list.
+Only available in EAPIs listed in table~\ref{tab:pipestatus} as supporting 
\t{pipestatus}.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{9}
@@ -224,6 +229,20 @@ completing. Ebuilds must not run any of these commands 
once the current phase fu
 \end{tabular}
 \end{centertable}
 
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{EAPIs supporting \t{pipestatus}}
+\label{tab:pipestatus}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Supports \t{pipestatus}?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7, 8 & No  \\
+  9 & Yes \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \subsection{Patch commands}
 These commands are used during the \t{src_prepare} phase to apply patches to 
the package's sources.
 Ebuilds must not run any of these commands once the current phase function has 
returned.



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-15 Thread Ulrich Müller
commit: d00eee853440b9a509e19158d6a7f5379eb5c377
Author: Ulrich Müller  gentoo  org>
AuthorDate: Fri Nov 29 16:02:56 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Jun 15 11:33:36 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=d00eee85

EAPI 9 bans assert

Bug: https://bugs.gentoo.org/566342
Signed-off-by: Ulrich Müller  gentoo.org>

 eapi-differences.tex |  4 
 pkg-mgr-commands.tex | 10 +++---
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 91c09a2..abaaf52 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -126,6 +126,9 @@ GNU \t{patch} version & \compactfeatureref{gnu-patch} &
 \t{hasq} & \compactfeatureref{banned-commands} &
 Yes & Yes & Banned & Banned \\
 
+\t{assert} & \compactfeatureref{banned-commands} &
+Yes & Yes & Yes & Banned \\
+
 Query command options & \compactfeatureref{pm-query-options} &
 \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} & \t{-b}, \t{-d}, \t{-r} & 
\t{-b}, \t{-d}, \t{-r} \\
 
@@ -368,6 +371,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item \t{use.stable} and \t{package.use.stable}, \featureref{use-stable}.
 \item Bash version is 5.2, \featureref{bash-version}.
 \item Variables no longer exported, \featureref{export-vars}.
+\item \t{assert} banned, \featureref{banned-commands}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 878d1eb..3dfc3e1 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -80,10 +80,12 @@ called, the package manager must abort the build process 
indicating an error.
   \multicolumn{1}{c}{} &
   \multicolumn{1}{c}{\textbf{\t{useq}}} &
   \multicolumn{1}{c}{\textbf{\t{hasv}}} &
-  \multicolumn{1}{c}{\textbf{\t{hasq}}} & & & \\
+  \multicolumn{1}{c}{\textbf{\t{hasq}}} &
+  \multicolumn{1}{c}{\textbf{\t{assert}}} & & \\
   \midrule
-  0, 1, 2, 3, 4, 5, 6, 7  & No  & No  & No  & & & \\
-  8, 9& Yes & Yes & Yes & & & \\
+  0, 1, 2, 3, 4, 5, 6, 7  & No  & No  & No  & No  & & \\
+  8   & Yes & Yes & Yes & No  & & \\
+  9   & Yes & Yes & Yes & Yes & & \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -201,6 +203,8 @@ completing. Ebuilds must not run any of these commands once 
the current phase fu
 environment.
 \item[assert] Checks the shell's pipe status array, and if any element is 
non-zero (indicating
 failure), calls \t{die}, passing any parameters to it.
+In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as per
+section~\ref{sec:banned-commands}.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{9}



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-15 Thread Ulrich Müller
commit: 66a6830aea68f7856b289feb9a8d0a5c9a7850c0
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sat Jan 11 09:47:19 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Jun 15 11:33:34 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=66a6830a

EAPI 9: Bash version is 5.2

Bug: https://bugs.gentoo.org/946193
Signed-off-by: Ulrich Müller  gentoo.org>

 eapi-differences.tex | 3 ++-
 ebuild-format.tex| 3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 88be303..7243e1f 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -48,7 +48,7 @@ Profile files as directories & 
\compactfeatureref{profile-file-dirs} &
 No & No & No & Yes \\
 
 Bash version & \compactfeatureref{bash-version} &
-4.2 & 4.2 & 5.0 & 5.0 \\
+4.2 & 4.2 & 5.0 & 5.2 \\
 
 Selective URI restrictions & \compactfeatureref{uri-restrict} &
 No & No & Yes & Yes \\
@@ -363,6 +363,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \begin{compactitem}
 \item Different default EAPI for profiles, \featureref{profile-eapi-default}.
 \item \t{use.stable} and \t{package.use.stable}, \featureref{use-stable}.
+\item Bash version is 5.2, \featureref{bash-version}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/ebuild-format.tex b/ebuild-format.tex
index 844f01a..a543013 100644
--- a/ebuild-format.tex
+++ b/ebuild-format.tex
@@ -32,7 +32,8 @@ 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, 9  & 5.0 & Yes \\
+  8 & 5.0 & Yes \\
+  9 & 5.2 & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-15 Thread Ulrich Müller
commit: e22ff93f7768ed70f8f75e00a1ad2bc1ff12cdf3
Author: Ulrich Müller  gentoo  org>
AuthorDate: Tue Jan  7 17:13:28 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Jun 15 11:33:35 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=e22ff93f

EAPI 9: Defined variables are no longer exported

Bug: https://bugs.gentoo.org/721088
Signed-off-by: Ulrich Müller  gentoo.org>

 eapi-differences.tex |  4 
 ebuild-env-vars.tex  | 36 +---
 ebuild-vars.tex  |  4 
 3 files changed, 37 insertions(+), 7 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 7243e1f..91c09a2 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -75,6 +75,9 @@ Accumulate \t{PROPERTIES} & 
\compactfeatureref{accumulate-vars} &
 Accumulate \t{RESTRICT} & \compactfeatureref{accumulate-vars} &
 No & No & Yes & Yes \\
 
+Export variables & \compactfeatureref{export-vars} &
+Yes & Yes & Yes & No \\
+
 \t{PORTDIR} & \compactfeatureref{portdir} &
 Yes & No & No & No \\
 
@@ -364,6 +367,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item Different default EAPI for profiles, \featureref{profile-eapi-default}.
 \item \t{use.stable} and \t{package.use.stable}, \featureref{use-stable}.
 \item Bash version is 5.2, \featureref{bash-version}.
+\item Variables no longer exported, \featureref{export-vars}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 268fa36..4f19d70 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -1,10 +1,10 @@
 \section{Defined variables}
 \label{sec:ebuild-env-vars}
 
-The package manager must define the following environment variables. Not all 
variables are
-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.
+The package manager must define the following variables. Not all variables are 
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}).
@@ -12,6 +12,26 @@ For example, \t{EBUILD_PHASE} is different for every phase, 
and \t{ROOT} may hav
 the various different \t{pkg_*} phases. Ebuilds must recalculate any variable 
they derive from an
 inconsistent variable.
 
+\featurelabel{export-vars} These variables are either exported to the 
environment or kept as
+unexported shell variables, as specified for EAPIs in 
table~\ref{tab:export-vars}; exceptions are
+\t{TMPDIR} and \t{HOME} which are always exported to the environment. In EAPIs 
where variables are
+not exported, the package manager must pass those that are required by 
ebuild-specific external
+commands (see section~\ref{sec:pkg-mgr-commands}) in an implementation-defined 
manner.
+
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{EAPIs with variables exported to the environment}
+\label{tab:export-vars}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Variables exported?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7, 8 & Yes \\
+  9 & No  \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \begin{landscape}
 % Reduce width of text area to make room for margin notes
 \addtolength{\hsize}{-25mm}
@@ -168,13 +188,15 @@ inconsistent variable.
 \t{TMPDIR} &
 All &
 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. \\
+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{TMPDIR} is always
+exported to the environment. \\
 \t{HOME} &
 All &
 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. \\
+ebuild that may read or modify the home directory. \t{HOME} is always 
exported to the
+environment. \\
 \t{EPREFIX} &
 All &
 Yes &

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index b030943..9979ce9 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -335,6 +335,10 @@ defined based upon any variant condition.}
 \end{tabular}
 \end{centertable}
 
+For EAPIs listed in table~\ref{tab:export-vars} with the property that 
variables are not exported,
+the package manager must not

[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-15 Thread Ulrich Müller
commit: 32da3a86406c9657f0825e6772118220c41dc881
Author: Ulrich Müller  gentoo  org>
AuthorDate: Mon May 12 18:13:01 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Jun 15 11:33:37 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=32da3a86

EAPI 9 bans domo

Bug: https://bugs.gentoo.org/951502
Signed-off-by: Ulrich Müller  gentoo.org>

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index abaaf52..dd3d03e 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -129,6 +129,9 @@ GNU \t{patch} version & \compactfeatureref{gnu-patch} &
 \t{assert} & \compactfeatureref{banned-commands} &
 Yes & Yes & Yes & Banned \\
 
+\t{domo} & \compactfeatureref{banned-commands} &
+Yes & Yes & Yes & Banned \\
+
 Query command options & \compactfeatureref{pm-query-options} &
 \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} & \t{-b}, \t{-d}, \t{-r} & 
\t{-b}, \t{-d}, \t{-r} \\
 
@@ -372,6 +375,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item Bash version is 5.2, \featureref{bash-version}.
 \item Variables no longer exported, \featureref{export-vars}.
 \item \t{assert} banned, \featureref{banned-commands}.
+\item \t{domo} banned, \featureref{banned-commands}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 3dfc3e1..c977d00 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -81,11 +81,12 @@ called, the package manager must abort the build process 
indicating an error.
   \multicolumn{1}{c}{\textbf{\t{useq}}} &
   \multicolumn{1}{c}{\textbf{\t{hasv}}} &
   \multicolumn{1}{c}{\textbf{\t{hasq}}} &
-  \multicolumn{1}{c}{\textbf{\t{assert}}} & & \\
+  \multicolumn{1}{c}{\textbf{\t{assert}}} &
+  \multicolumn{1}{c}{\textbf{\t{domo}}} & \\
   \midrule
-  0, 1, 2, 3, 4, 5, 6, 7  & No  & No  & No  & No  & & \\
-  8   & Yes & Yes & Yes & No  & & \\
-  9   & Yes & Yes & Yes & Yes & & \\
+  0, 1, 2, 3, 4, 5, 6, 7  & No  & No  & No  & No  & No  & \\
+  8   & Yes & Yes & Yes & No  & No  & \\
+  9   & Yes & Yes & Yes & Yes & Yes & \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -589,6 +590,8 @@ the current phase function has returned.
 is the package name with \t{.mo} appended. Failure behaviour is EAPI 
dependent as per
 section~\ref{sec:failure-behaviour}. The locale tree location is EAPI 
dependent as per
 table~\ref{tab:domo-path}.
+In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as per
+section~\ref{sec:banned-commands}.
 
 \item[dosbin] As \t{dobin}, but installs to \t{DESTTREE/sbin}.
 



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-15 Thread Ulrich Müller
commit: 353c44479add6b473a12a9a0ee41c755e593d8bf
Author: Ulrich Müller  gentoo  org>
AuthorDate: Mon Jan 13 21:14:36 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Jun 15 11:33:36 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=353c4447

EAPI 9: Special profile variables are no longer exported

Bug: https://bugs.gentoo.org/948001
Signed-off-by: Ulrich Müller  gentoo.org>

 ebuild-env-vars.tex   | 10 --
 profile-variables.tex |  2 ++
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 4f19d70..1e2623b 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -354,8 +354,14 @@ commands (see section~\ref{sec:pkg-mgr-commands}) in an 
implementation-defined m
 \end{tabular}
 \end{centertable}
 
-Except where otherwise noted, all variables set in the active profiles' 
\t{make.defaults} files must
-be exported to the ebuild environment. \t{CHOST}, \t{CBUILD} and \t{CTARGET}, 
if not set by
+Variables listed in section~\ref{sec:specific-profile-vars} as having specific 
meanings or special
+handling, and that are set in the active profiles' \t{make.defaults} files, 
are either exported
+to the environment or kept as unexported shell variables, as specified for 
EAPIs in
+table~\ref{tab:export-vars}. To clarify, this behaviour is governed by the 
EAPI of the ebuild,
+not that of the profile.
+
+Except where otherwise noted, all other variables set in the active profiles' 
\t{make.defaults}
+files must be exported to the environment. \t{CHOST}, \t{CBUILD} and 
\t{CTARGET}, if not set by
 profiles, must contain either an appropriate machine tuple (the definition of 
appropriate is beyond
 the scope of this specification) or be unset.
 

diff --git a/profile-variables.tex b/profile-variables.tex
index f20fde4..ddcbd3a 100644
--- a/profile-variables.tex
+++ b/profile-variables.tex
@@ -69,6 +69,8 @@ completely override those in parent profiles.
 \end{centertable}
 
 \subsection{Specific variables and their meanings}
+\label{sec:specific-profile-vars}
+
 The following variables have specific meanings when set in profiles.
 \begin{description}
 \item[ARCH] The system's architecture. Must be a value listed in 
\t{profiles/arch.list}; see



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-15 Thread Ulrich Müller
commit: d25f31534f93b826bfc9c8460798109c3981eed3
Author: Ulrich Müller  gentoo  org>
AuthorDate: Mon Feb 21 18:32:43 2022 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Jun 15 11:33:33 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=d25f3153

EAPI 9 profile EAPI defaults to top-level

Bug: https://bugs.gentoo.org/806181
Signed-off-by: Ulrich Müller  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 fbe375e..d814c31 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



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-15 Thread Ulrich Müller
commit: 51aa4611911193f11777891196b08435b601a958
Author: Ulrich Müller  gentoo  org>
AuthorDate: Tue Jan  7 17:09:52 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Jun 15 11:33:35 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=51aa4611

Clarify use of the terms "export" and "environment variable"

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

 ebuild-env-vars.tex  | 12 ++--
 ebuild-functions.tex | 22 +++---
 ebuild-vars.tex  |  4 ++--
 3 files changed, 19 insertions(+), 19 deletions(-)

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 861dd48..268fa36 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -211,14 +211,14 @@ inconsistent variable.
 No &
 \featurelabel{desttree} Controls the location where \t{dobin}, \t{dolib}, 
\t{domo},
 and \t{dosbin} install things. Only for EAPIs listed in 
table~\ref{tab:removed-env-vars-table}
-as supporting \t{DESTTREE}\@. In all other EAPIs, this is retained as a 
conceptual variable not
-exported to the ebuild environment. \\
+as supporting \t{DESTTREE}\@. In all other EAPIs, this is retained as a 
conceptual variable
+inaccessible from the ebuild environment. \\
 \t{INSDESTTREE} &
 \t{src_install} &
 No &
 \featurelabel{insdesttree} Controls the location where \t{doins} installs 
things. Only for EAPIs
 listed in table~\ref{tab:removed-env-vars-table} as supporting 
\t{INSDESTTREE}\@. In all other
-EAPIs, this is retained as a conceptual variable not exported to the 
ebuild environment. \\
+EAPIs, this is retained as a conceptual variable inaccessible from the 
ebuild environment. \\
 \t{USE} &
 All &
 Yes &
@@ -373,11 +373,11 @@ This section discusses the handling of four variables:
 \begin{description}
 \item[IUSE] is the variable calculated from the \t{IUSE} values defined in 
ebuilds and eclasses.
 \item[IUSE_REFERENCEABLE] is a variable calculated from \t{IUSE} and a variety 
of other sources
-described below. It is purely a conceptual variable; it is not exported to 
the ebuild
+described below. It is purely a conceptual variable; it is inaccessible 
from the ebuild
 environment. Values in \t{IUSE_REFERENCEABLE} may legally be used in 
queries from other
 packages about an ebuild's state (for example, for use dependencies).
-\item[IUSE_EFFECTIVE] is another conceptual, unexported variable. Values in 
\t{IUSE_EFFECTIVE} are
-those which an ebuild may legally use in queries about itself (for 
example, for the \t{use}
+\item[IUSE_EFFECTIVE] is another conceptual, inaccessible variable. Values in 
\t{IUSE_EFFECTIVE}
+are those which an ebuild may legally use in queries about itself (for 
example, for the \t{use}
 function, and for use in dependency specification conditional blocks).
 \item[USE] is a variable calculated by the package manager and exported to the 
ebuild environment.
 \end{description}

diff --git a/ebuild-functions.tex b/ebuild-functions.tex
index 4308ea4..8f8668a 100644
--- a/ebuild-functions.tex
+++ b/ebuild-functions.tex
@@ -8,10 +8,10 @@ by the package manager as part of the build and/or install 
process. In all cases
 must provide a default implementation of these functions; unless otherwise 
stated this must be a
 no-op. All functions may assume that they have read access to all system 
libraries, binaries and
 configuration files that are accessible to normal users, as well as write 
access to the temporary
-directories specified by the \t{T}, \t{TMPDIR} and \t{HOME} environment 
variables
+directories specified by the \t{T}, \t{TMPDIR} and \t{HOME} variables
 (see section~\ref{sec:ebuild-env-vars}). Most functions must assume only that 
they have additional
-write access to the package's working directory (the \t{WORKDIR} environment 
variable); exceptions
-are noted below.
+write access to the package's working directory (the \t{WORKDIR} variable); 
exceptions are noted
+below.
 
 The environment for functions run outside of the build sequence (that is, 
\t{pkg_config},
 \t{pkg_info}, \t{pkg_prerm} and \t{pkg_postrm}) must be the environment used 
for the build of the
@@ -400,37 +400,37 @@ src_install() {
 
 The \t{pkg_preinst} function performs any special tasks that are required 
immediately before
 merging the package to the live filesystem. It must not write outside of the 
directories specified
-by the \t{ROOT} and \t{D} environment variables.
+by the \t{ROOT} and \t{D} variables.
 
 \t{pkg_preinst} must be run with full access to all files and directories 
below that specified by
-the \t{ROOT} and \t{D} environment variables.
+the \t{ROOT} and \t{D} variables.
 
 \subsection{pkg_postinst}
 
 The \t{pkg_postinst} function performs any special tasks that are required 
immediately after
 merging the package to the live filesystem. It must not write outside of the 
directory specified
-in the \t{ROOT} environment variable.
+in the \t{ROOT} variable.
 
 

[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-15 Thread Ulrich Müller
commit: 6a40faf91064e969dde1e038fc98de25b96841af
Author: Ulrich Müller  gentoo  org>
AuthorDate: Tue Aug  3 16:32:47 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Jun 15 11:33:32 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=6a40faf9

Add an EAPI 9 identical to EAPI 8

Signed-off-by: Ulrich Müller  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 c1f7d6a..ce6e670 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 

[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-15 Thread Ulrich Müller
commit: 98d739d1d5e50a279a318320de6209c455238204
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sat May 17 06:33:24 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Jun 15 11:33:34 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=98d739d1

EAPI 9 has use.stable and package.use.stable

Bug: https://bugs.gentoo.org/955833
Signed-off-by: Ulrich Müller  gentoo.org>

 eapi-differences.tex |  7 +++
 profiles.tex | 34 ++
 2 files changed, 41 insertions(+)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index f6aafe7..88be303 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,12 @@ Profile files as directories & 
\compactfeatureref{profile-file-dirs} &
 \t{package.provided} & \compactfeatureref{package-provided} &
 Optional & No & No & No \\
 
+\t{use.stable} & \compactfeatureref{use-stable} &
+No & No & No & Yes \\
+
+\t{package.use.stable} & \compactfeatureref{use-stable} &
+No & No & No & Yes \\
+
 Bash version & \compactfeatureref{bash-version} &
 4.2 & 4.2 & 5.0 & 5.0 \\
 
@@ -356,6 +362,7 @@ EAPI 9 is EAPI 8 with the following changes:
 
 \begin{compactitem}
 \item Different default EAPI for profiles, \featureref{profile-eapi-default}.
+\item \t{use.stable} and \t{package.use.stable}, \featureref{use-stable}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/profiles.tex b/profiles.tex
index d814c31..43b8763 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -165,6 +165,40 @@ specification, and then a space delimited list of USE 
flags to enable. A USE fla
 specification is limited to the forms defined by the directory's EAPI\@. In 
some EAPIs,
 \t{package.use} can be a directory instead of a regular file as per 
section~\ref{sec:line-stacking}.
 
+\subsection{use.stable and package.use.stable}
+\featurelabel{use-stable} The \t{use.stable} and \t{package.use.stable} files 
may be used to
+override the default USE flags specified by \t{make.defaults}. They only apply 
to packages that
+are merged due to a stable keyword in the sense of section~\ref{sec:keywords}. 
Each line in
+\t{use.stable} contains a USE flag to enable; the \t{-flag} syntax indicates 
that the flag should
+be disabled. The \t{package.use.stable} file uses the same format as 
\t{package.use}.
+\t{USE_EXPAND} values may be enabled or disabled by using 
\t{expand_name_value}.
+
+Stable restrictions are applied exactly when the following condition holds: If 
every stable keyword
+in \t{KEYWORDS} were replaced with its tilde-prefixed counterpart (see 
section~\ref{sec:keywords}),
+then the resulting \t{KEYWORDS} setting would prevent installation of the 
package.
+
+If a flag appears in more than one of \t{package.use}, \t{use.stable} and 
\t{package.use.stable},
+then \t{package.use.stable} takes precedence over \t{package.use}, which in 
turn takes precedence
+over \t{use.stable}.
+
+These files are supported in EAPIs as per table~\ref{tab:profile-use-stable}. 
They can be
+directories instead of regular files as per section~\ref{sec:line-stacking}.
+
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{Profile directory support for \t{use.stable} and 
\t{package.use.stable}}
+\label{tab:profile-use-stable}
+\begin{tabular}{lll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Supports \t{use.stable}?}} &
+  \multicolumn{1}{c}{\textbf{Supports \t{package.use.stable}?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7, 8 & No  & No  \\
+  9 & Yes & Yes \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \subsection{USE masking and forcing}
 \label{sec:use-masking}
 This section covers the eight files \t{use.mask}, \t{use.force}, 
\t{use.stable.mask},



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-15 Thread Ulrich Müller
commit: 404efa97cacae79622134c15cdc8715b7464b39b
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun Jun 15 11:18:03 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Jun 15 11:18:03 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=404efa97

Appendix: Use description lists for historical curiosities

This is more consistent with the rest of the document where individual
features rarely have their own subsections. Besides, it saves one page
in the PDF version.

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

 appendices.tex | 28 +---
 1 file changed, 17 insertions(+), 11 deletions(-)

diff --git a/appendices.tex b/appendices.tex
index fd6ba34..8607608 100644
--- a/appendices.tex
+++ b/appendices.tex
@@ -32,7 +32,8 @@ The items described in this section are included for 
information only. Unless ot
 were deprecated or abandoned long before EAPI was introduced. Ebuilds must not 
use these features,
 and package managers should not be changed to support them.
 
-\subsection{If-else USE blocks}
+\begin{description}
+\item[If-else USE blocks]
 Historically, Portage supported if-else use conditionals, as shown by
 listing~\ref{lst:if-else-use-listing}. The block before the colon would be 
taken if the condition
 was met, and the block after the colon would be taken if the condition was not 
met.
@@ -50,27 +51,30 @@ DEPEND="
 \end{verbatim}
 \end{listing}
 
-\subsection{CVS versions}
+\item[CVS versions]
 Portage has very crude support for CVS packages. The package \t{foo} could 
contain a file named
 \t{foo-cvs.1.2.3.ebuild}. This version would order \emph{higher} than any 
non-CVS version (including
 \t{foo-2.ebuild}). This feature has not seen real world use and breaks 
versioned dependencies, so
 it must not be used.
 
-\subsection{use.defaults}
+\item[use.defaults]
 The \t{use.defaults} file in the profile directory was used to implement 
`autouse'---switching USE
 flags on or off depending upon which packages are installed. It was deprecated 
long ago and finally
 removed in 2009.
 
+\end{description}
+
 \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.
 
-\subsection{Bash version}
+\begin{description}
+\item[Bash version]
 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}
+\item[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.
@@ -82,7 +86,7 @@ GLEP~37~\cite{glep37} and finally removed in 2011.
 requirements to pull in a `provider'. This does not require any special 
handling from the package
 manager.}
 
-\subsection{EAPI parsing}
+\item[EAPI parsing]
 The method to specify the EAPI of an ebuild used to be a shell variable 
assignment, and the package
 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
@@ -94,12 +98,12 @@ The current syntax of the \t{EAPI} assignment statement 
(see section~\ref{sec:ea
 the package manager to obtain the EAPI from the ebuild by a regular expression 
match and without
 sourcing it, was introduced in May 2012.
 
-\subsection{Package names}
+\item[Package names]
 Previously, package names were only required not to end in a hyphen followed 
by one or more digits.
 In October 2012 this was tightened to the specification in 
section~\ref{sec:package-names}, namely
 that they must not end in a hyphen followed by anything resembling a package 
version.
 
-\subsection{Asterisk in dependency specification}
+\item[Asterisk in dependency specification]
 In the \t{=} dependency operator specified in section~\ref{sec:dep-operator}, 
an asterisk used to
 induce string prefix comparison instead of the normal version comparison 
logic. That could lead to
 surprising results, e.\,g.\ \t{=dev-lang/perl-5.2*} matching 
\t{dev-lang/perl-5.22.0}. Moreover,
@@ -108,13 +112,13 @@ implementation in package managers deviated from what was 
specified.
 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}
+\item[Empty dependency groups]
 The dependency specification format (see section~\ref{sec:dependency-spec}) 
originally permitted
 all-of, any-of, exactly-one-of, at-most-one-of and use-conditional groups with 
zero sub-elements.
 However, such empty groups were neither supported by all package managers nor 
used in ebuilds.
 They were dropped 

[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-15 Thread Ulrich Müller
commit: ba0b51f70f2f45039633daddbd47cec18030aced
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun Jun 15 11:16:40 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Jun 15 11:16:40 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=ba0b51f7

Appendix: Tweak wording in "Retroactive changes" section

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

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

diff --git a/appendices.tex b/appendices.tex
index 8249ab3..fd6ba34 100644
--- a/appendices.tex
+++ b/appendices.tex
@@ -88,7 +88,7 @@ manager had to source the ebuild in order to determine the 
EAPI\@. Therefore any
 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
-rejected though.
+ultimately rejected.
 
 The current syntax of the \t{EAPI} assignment statement (see 
section~\ref{sec:eapi}), allowing
 the package manager to obtain the EAPI from the ebuild by a regular expression 
match and without



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-08 Thread Ulrich Müller
commit: 1d903d17ce058c78c8562807a2afaf5e885bd38a
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun Jun  8 16:41:33 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Jun  8 20:36:19 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=1d903d17

Cheat sheet: Update for EAPI 9

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

 eapi-cheatsheet.tex | 49 -
 1 file changed, 48 insertions(+), 1 deletion(-)

diff --git a/eapi-cheatsheet.tex b/eapi-cheatsheet.tex
index 60bea45..639d3f3 100644
--- a/eapi-cheatsheet.tex
+++ b/eapi-cheatsheet.tex
@@ -15,7 +15,7 @@
 \usepackage[local]{gitinfo2}
 \newcommand{\code}[1]{\texttt{#1}}
 % This should reflect the latest approved EAPI version
-\newcommand{\version}{8.0}
+\newcommand{\version}{9.0}
 \newcommand{\featureref}[1]{\textsc{#1} on page~\pageref{feat:#1}}
 \renewcommand{\familydefault}{\sfdefault}
 \urlstyle{sf}
@@ -577,6 +577,53 @@ differences between these EAPIs.
 and LHA archives. See \featureref{unpack-extensions}.
 \end{description}
 
+\section{EAPI 9}
+\label{sec:cs:eapi9}
+\subsection{Additions/changes}
+\label{sec:cs:eapi9-additions}
+\begin{description}
+\item[Default EAPI for profiles] Profile directories without their
+own \code{eapi} file no longer default to EAPI 0, but to the EAPI
+specified in the top-level \code{profiles} directory.
+See \featureref{profile-eapi-default}.
+\item[\code{use.stable} and \code{package.use.stable}] These are
+new files supported in profile directories. They may be used to
+override the default USE flags specified by \code{make.defaults},
+but act only on packages that would be merged due to a stable
+keyword. See \featureref{use-stable}.
+\item[Bash version] Ebuilds can use features of Bash version 5.2
+(was 5.0 before). See \featureref{bash-version}.
+\item[Variables are no longer exported] The package manager no
+longer exports its defined shell variables (exceptions are
+\code{TMPDIR} and \code{HOME}) to the environment. The same
+applies to variables defined in \code{make.defaults} that have
+specific meanings. See \featureref{export-vars}.
+\item[\code{pipestatus}] Checks the shell's pipe status array,
+i.\,e.\ the exit status of the command(s) in the last executed
+pipeline, and returns true if all elements are zero. It also
+prints the pipe status array when the \code{-v} option is given.
+See \featureref{pipestatus}.
+\item[\code{ver_replacing} \emph{op v2}] Checks if the relation
+\emph{v1 op v2} is true for any element \emph{v1} of
+\code{REPLACING_VERSIONS}\@. \emph{op} can be any operator that is
+accepted by \code{ver_test}. See \featureref{ver-replacing}.
+\item[\code{edo}] Outputs its entire argument list as an
+informational message, then executes it as a simple shell command,
+with standard failure behaviour. See \featureref{edo}.
+\item[Merging of symlinks] When merging \code{D} to \code{ROOT},
+absolute symlinks are now merged as-is. The package manager will
+no longer strip a leading \code{D} from their link targets.
+See \featureref{symlink-rewrite}.
+\end{description}
+\subsection{Removals/bans}
+\label{sec:cs:eapi9-removalsbans}
+\begin{description}
+\item[\code{assert}] No longer allowed. Use \code{pipestatus}
+instead. See \featureref{banned-commands}.
+\item[\code{domo}] No longer allowed. Use \code{insinto} and
+\code{newins} as replacement. See \featureref{banned-commands}.
+\end{description}
+
 \end{document}
 
 % vim: set filetype=tex fileencoding=utf8 et tw=70 spell spelllang=en :



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-08 Thread Ulrich Müller
commit: 434e4fcfffba6fe53de8659db8a299414afa8f1a
Author: Ulrich Müller  gentoo  org>
AuthorDate: Tue Aug  3 16:32:47 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Jun  8 20:36:12 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=434e4fcf

Add an EAPI 9 identical to EAPI 8

Signed-off-by: Ulrich Müller  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 c1f7d6a..a826355 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 

[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-08 Thread Ulrich Müller
commit: 14121322cf86146d5cb0e773f8f7d21ed456b0ac
Author: Ulrich Müller  gentoo  org>
AuthorDate: Mon May 12 18:13:01 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Jun  8 20:36:16 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=14121322

EAPI 9 bans domo

Bug: https://bugs.gentoo.org/951502
Signed-off-by: Ulrich Müller  gentoo.org>

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index abaaf52..dd3d03e 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -129,6 +129,9 @@ GNU \t{patch} version & \compactfeatureref{gnu-patch} &
 \t{assert} & \compactfeatureref{banned-commands} &
 Yes & Yes & Yes & Banned \\
 
+\t{domo} & \compactfeatureref{banned-commands} &
+Yes & Yes & Yes & Banned \\
+
 Query command options & \compactfeatureref{pm-query-options} &
 \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} & \t{-b}, \t{-d}, \t{-r} & 
\t{-b}, \t{-d}, \t{-r} \\
 
@@ -372,6 +375,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item Bash version is 5.2, \featureref{bash-version}.
 \item Variables no longer exported, \featureref{export-vars}.
 \item \t{assert} banned, \featureref{banned-commands}.
+\item \t{domo} banned, \featureref{banned-commands}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 3dfc3e1..c977d00 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -81,11 +81,12 @@ called, the package manager must abort the build process 
indicating an error.
   \multicolumn{1}{c}{\textbf{\t{useq}}} &
   \multicolumn{1}{c}{\textbf{\t{hasv}}} &
   \multicolumn{1}{c}{\textbf{\t{hasq}}} &
-  \multicolumn{1}{c}{\textbf{\t{assert}}} & & \\
+  \multicolumn{1}{c}{\textbf{\t{assert}}} &
+  \multicolumn{1}{c}{\textbf{\t{domo}}} & \\
   \midrule
-  0, 1, 2, 3, 4, 5, 6, 7  & No  & No  & No  & No  & & \\
-  8   & Yes & Yes & Yes & No  & & \\
-  9   & Yes & Yes & Yes & Yes & & \\
+  0, 1, 2, 3, 4, 5, 6, 7  & No  & No  & No  & No  & No  & \\
+  8   & Yes & Yes & Yes & No  & No  & \\
+  9   & Yes & Yes & Yes & Yes & Yes & \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -589,6 +590,8 @@ the current phase function has returned.
 is the package name with \t{.mo} appended. Failure behaviour is EAPI 
dependent as per
 section~\ref{sec:failure-behaviour}. The locale tree location is EAPI 
dependent as per
 table~\ref{tab:domo-path}.
+In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as per
+section~\ref{sec:banned-commands}.
 
 \item[dosbin] As \t{dobin}, but installs to \t{DESTTREE/sbin}.
 



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-08 Thread Ulrich Müller
commit: e53cb201a1aff65a2682ee36d8423acbccf84b02
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun Jun  8 14:57:50 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Jun  8 20:36:19 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=e53cb201

Cheat sheet: Remove EAPI 6 to make room for EAPI 9

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

 eapi-cheatsheet.tex | 156 ++--
 1 file changed, 78 insertions(+), 78 deletions(-)

diff --git a/eapi-cheatsheet.tex b/eapi-cheatsheet.tex
index 438f189..60bea45 100644
--- a/eapi-cheatsheet.tex
+++ b/eapi-cheatsheet.tex
@@ -77,10 +77,10 @@
 \footnote{\url{https://creativecommons.org/licenses/by-sa/4.0/}}
 \end{abstract}
 
-\section{EAPIs 0, 1, 2, 3, 4, and 5}
+\section{EAPIs 0 to 6}
 \label{sec:cs:eapi0-2}
-Omitted for lack of space. See version~5.0 of this document for
-differences between these previous EAPIs.
+Omitted for lack of space. See previous versions of this document for
+differences between these EAPIs.
 
 % \section{EAPI 0}
 % \label{sec:cs:eapi0}
@@ -327,81 +327,81 @@ differences between these previous EAPIs.
 % See \featureref{stablemask}.
 % \end{description}
 
-\section{EAPI 6 (2015-11-13)}
-\label{sec:cs:eapi6}
-\subsection{Additions/changes}
-\label{sec:cs:eapi6-additions}
-\begin{description}
-\item[Bash version] Ebuilds can use features of Bash version 4.2
-(was 3.2 before).
-See \featureref{bash-version}.
-\item[\code{failglob}] The \code{failglob} option of Bash is set
-in global scope, so that unintentional pattern expansion will be
-caught as an error.
-See \featureref{failglob}.
-\item[Locale settings] It is ensured that the behaviour of case
-modification and collation order for ASCII characters
-(\code{LC_CTYPE} and \code{LC_COLLATE}) are the same as in the
-POSIX locale.
-See \featureref{locale-settings}.
-\item[\code{src_prepare}] This phase function has a default now,
-which applies patches from the \code{PATCHES} variable with the
-new \code{eapply} command, and user-provided patches with
-\code{eapply_user}.
-See \featureref{src-prepare}.
-\item[\code{src_install}] The default implementation uses the new
-\code{einstalldocs} function for installing documentation.
-See \featureref{src-install}.
-\item[\code{nonfatal die}] When \code{die} or \code{assert} are
-called under the \code{nonfatal} command and with the \code{-n}
-option, they will not abort the build process but return with an
-error.
-See \featureref{nonfatal-die}.
-\item[\code{unpack} changes] \code{unpack} has been extended:
-\begin{description}
-\item[Pathnames] Both absolute paths and paths relative to the
-working directory are accepted as arguments.
-See \featureref{unpack-absolute}.
-\item[\code{.txz} files] Suffix \code{.txz} for xz compressed
-tarballs is recognised.
-See \featureref{unpack-extensions}.
-\item[Filename case] Character case of filename extensions is
-ignored.
-See \featureref{unpack-ignore-case}.
-\end{description}
-\item[\code{econf} changes] Options \code{-{}-docdir} and
-\code{-{}-htmldir} are passed to \code{configure}, in addition to
-the existing options.
-See \featureref{econf-options}.
-\item[\code{eapply}] The \code{eapply} command is a simplified
-substitute for \code{epatch}, implemented in the package manager.
-The patches from its file or directory arguments are applied using
-\code{patch -p1}.
-See \featureref{eapply}.
-\item[\code{eapply_user}] The \code{eapply_user} command permits
-the package manager to apply user-provided patches. It must be
-called from every \code{src_prepare} function.
-See \featureref{eapply-user}.
-\item[\code{einstalldocs}] The \code{einstalldocs} function will
-install the files specified by the \code{DOCS} variable (or a
-default set of files if \code{DOCS} is unset) and by the
-\code{HTML_DOCS} variable.
-See \featureref{einstalldocs}.
-\item[\code{in_iuse}] The \code{in_iuse} function returns
-true if the USE flag given as its argument is available in the
-ebuild for USE queries.
-See \featureref{in-iuse}.
-\item[\code{get_libdir}] The \code{get_libdir} command outputs
-the \code{lib*} directory basename suitable for the current ABI\@.
-See \featureref{get-libdir}.
-\end{description}
-\subsection{Removals/bans}
-\label{sec:cs:eapi6-removalsbans}
-\begin{description}
-\item[\code{einstall}] No longer allowed. Use \code{emake install}
-as replacement.
-See \featureref{banned-commands}.
-\end{description}
+% \section{EAPI 6 (2015-11-13)}
+% \label{sec:cs:eapi6}
+% \subsection{Additions/changes}
+% \label{sec:cs:eapi6-additions}
+% \begin{description}
+% \item[Bash version] Ebuilds can use features of Bash version 4.2
+

[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-08 Thread Ulrich Müller
commit: 71c8dd85b6df8d6f17d1f927c133fc786345b50b
Author: Ulrich Müller  gentoo  org>
AuthorDate: Mon May 12 18:14:14 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Jun  8 20:36:18 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=71c8dd85

EAPI 9 has edo

Bug: https://bugs.gentoo.org/744880
Signed-off-by: Ulrich Müller  gentoo.org>

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index d303322..be95fbe 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -192,6 +192,9 @@ Controllable stripping & \compactfeatureref{dostrip} &
 \t{unpack} support for \t{rar} & \compactfeatureref{unpack-extensions} &
 Yes & Yes & No & No \\
 
+\t{edo} & \compactfeatureref{edo} &
+No & No & No & Yes \\
+
 \end{longtable}
 
 \chapter{Differences between EAPIs}
@@ -384,6 +387,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item \t{domo} banned, \featureref{banned-commands}.
 \item \t{pipestatus}, \featureref{pipestatus}.
 \item \t{ver_replacing}, \featureref{ver-replacing}.
+\item \t{edo}, \featureref{edo}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index a49ab98..a4c59fa 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -1301,21 +1301,32 @@ has returned.
 \end{algorithmic}
 \end{algorithm}
 
+\item[edo] \featurelabel{edo} Takes one or more arguments. The entire argument 
list is output
+as an informational message to stderr; individual tokens may be reformatted to 
avoid ambiguity.
+The first argument is then executed as a command, with the remaining arguments 
passed to it.
+If the command fails, \t{edo} aborts the build process using \t{die}, unless 
it was called under
+\t{nonfatal}, in which case it returns a non-zero exit status.
+
+\t{edo} must be implemented internally as a shell function. Only available in 
EAPIs listed in
+table~\ref{tab:misc-commands} as supporting \t{edo}.
+
 \end{description}
 
 \ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Misc commands for EAPIs}
 \label{tab:misc-commands}
-\begin{tabular}{}
+\begin{tabular}{l}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{c}{\textbf{\t{default}?}} &
   \multicolumn{1}{c}{\textbf{\t{einstalldocs}?}} &
-  \multicolumn{1}{c}{\textbf{\t{get_libdir}?}} \\
+  \multicolumn{1}{c}{\textbf{\t{get_libdir}?}} &
+  \multicolumn{1}{c}{\textbf{\t{edo}?}} \\
   \midrule
-  0, 1  & No  & No  & No  \\
-  2, 3, 4, 5& Yes & No  & No  \\
-  6, 7, 8, 9& Yes & Yes & Yes \\
+  0, 1  & No  & No  & No  & No  \\
+  2, 3, 4, 5& Yes & No  & No  & No  \\
+  6, 7, 8   & Yes & Yes & Yes & No  \\
+  9 & Yes & Yes & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-08 Thread Ulrich Müller
commit: 7fcb8f896262ec45a93cbe738f97f82b963d7912
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sat Jan 11 09:47:19 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Jun  8 20:36:14 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=7fcb8f89

EAPI 9: Bash version is 5.2

Bug: https://bugs.gentoo.org/946193
Signed-off-by: Ulrich Müller  gentoo.org>

 eapi-differences.tex | 3 ++-
 ebuild-format.tex| 3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 88be303..7243e1f 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -48,7 +48,7 @@ Profile files as directories & 
\compactfeatureref{profile-file-dirs} &
 No & No & No & Yes \\
 
 Bash version & \compactfeatureref{bash-version} &
-4.2 & 4.2 & 5.0 & 5.0 \\
+4.2 & 4.2 & 5.0 & 5.2 \\
 
 Selective URI restrictions & \compactfeatureref{uri-restrict} &
 No & No & Yes & Yes \\
@@ -363,6 +363,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \begin{compactitem}
 \item Different default EAPI for profiles, \featureref{profile-eapi-default}.
 \item \t{use.stable} and \t{package.use.stable}, \featureref{use-stable}.
+\item Bash version is 5.2, \featureref{bash-version}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/ebuild-format.tex b/ebuild-format.tex
index 844f01a..a543013 100644
--- a/ebuild-format.tex
+++ b/ebuild-format.tex
@@ -32,7 +32,8 @@ 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, 9  & 5.0 & Yes \\
+  8 & 5.0 & Yes \\
+  9 & 5.2 & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-08 Thread Ulrich Müller
commit: 56fd215fa18c325bc2a02f325ac631054d2d41e7
Author: Ulrich Müller  gentoo  org>
AuthorDate: Thu Jun 20 18:16:12 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Jun  8 20:36:18 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=56fd215f

EAPI 9 no longer rewrites absolute symlinks

Bug: https://bugs.gentoo.org/934514
Signed-off-by: Ulrich Müller  gentoo.org>

 eapi-differences.tex |  4 
 merge.tex| 19 +--
 2 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index be95fbe..13c1c38 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -195,6 +195,9 @@ Controllable stripping & \compactfeatureref{dostrip} &
 \t{edo} & \compactfeatureref{edo} &
 No & No & No & Yes \\
 
+Absolute symlink rewriting & \compactfeatureref{symlink-rewrite} &
+Yes & Yes & Yes & No \\
+
 \end{longtable}
 
 \chapter{Differences between EAPIs}
@@ -388,6 +391,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item \t{pipestatus}, \featureref{pipestatus}.
 \item \t{ver_replacing}, \featureref{ver-replacing}.
 \item \t{edo}, \featureref{edo}.
+\item Absolute symlinks no longer 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}
 



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-08 Thread Ulrich Müller
commit: 884397cdf414cb7d968b6a6a8fd08bd1e3578429
Author: Ulrich Müller  gentoo  org>
AuthorDate: Fri Nov 29 16:02:56 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Jun  8 20:36:15 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=884397cd

EAPI 9 bans assert

Bug: https://bugs.gentoo.org/566342
Signed-off-by: Ulrich Müller  gentoo.org>

 eapi-differences.tex |  4 
 pkg-mgr-commands.tex | 10 +++---
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 91c09a2..abaaf52 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -126,6 +126,9 @@ GNU \t{patch} version & \compactfeatureref{gnu-patch} &
 \t{hasq} & \compactfeatureref{banned-commands} &
 Yes & Yes & Banned & Banned \\
 
+\t{assert} & \compactfeatureref{banned-commands} &
+Yes & Yes & Yes & Banned \\
+
 Query command options & \compactfeatureref{pm-query-options} &
 \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} & \t{-b}, \t{-d}, \t{-r} & 
\t{-b}, \t{-d}, \t{-r} \\
 
@@ -368,6 +371,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item \t{use.stable} and \t{package.use.stable}, \featureref{use-stable}.
 \item Bash version is 5.2, \featureref{bash-version}.
 \item Variables no longer exported, \featureref{export-vars}.
+\item \t{assert} banned, \featureref{banned-commands}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 878d1eb..3dfc3e1 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -80,10 +80,12 @@ called, the package manager must abort the build process 
indicating an error.
   \multicolumn{1}{c}{} &
   \multicolumn{1}{c}{\textbf{\t{useq}}} &
   \multicolumn{1}{c}{\textbf{\t{hasv}}} &
-  \multicolumn{1}{c}{\textbf{\t{hasq}}} & & & \\
+  \multicolumn{1}{c}{\textbf{\t{hasq}}} &
+  \multicolumn{1}{c}{\textbf{\t{assert}}} & & \\
   \midrule
-  0, 1, 2, 3, 4, 5, 6, 7  & No  & No  & No  & & & \\
-  8, 9& Yes & Yes & Yes & & & \\
+  0, 1, 2, 3, 4, 5, 6, 7  & No  & No  & No  & No  & & \\
+  8   & Yes & Yes & Yes & No  & & \\
+  9   & Yes & Yes & Yes & Yes & & \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -201,6 +203,8 @@ completing. Ebuilds must not run any of these commands once 
the current phase fu
 environment.
 \item[assert] Checks the shell's pipe status array, and if any element is 
non-zero (indicating
 failure), calls \t{die}, passing any parameters to it.
+In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as per
+section~\ref{sec:banned-commands}.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{9}



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-08 Thread Ulrich Müller
commit: 768dcd28c7554c2a3dc0958c66ef916fa378ff0d
Author: Ulrich Müller  gentoo  org>
AuthorDate: Tue Jan  7 17:09:52 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Jun  8 20:36:14 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=768dcd28

Clarify use of the terms "export" and "environment variable"

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

 ebuild-env-vars.tex  | 12 ++--
 ebuild-functions.tex | 22 +++---
 ebuild-vars.tex  |  4 ++--
 3 files changed, 19 insertions(+), 19 deletions(-)

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 861dd48..268fa36 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -211,14 +211,14 @@ inconsistent variable.
 No &
 \featurelabel{desttree} Controls the location where \t{dobin}, \t{dolib}, 
\t{domo},
 and \t{dosbin} install things. Only for EAPIs listed in 
table~\ref{tab:removed-env-vars-table}
-as supporting \t{DESTTREE}\@. In all other EAPIs, this is retained as a 
conceptual variable not
-exported to the ebuild environment. \\
+as supporting \t{DESTTREE}\@. In all other EAPIs, this is retained as a 
conceptual variable
+inaccessible from the ebuild environment. \\
 \t{INSDESTTREE} &
 \t{src_install} &
 No &
 \featurelabel{insdesttree} Controls the location where \t{doins} installs 
things. Only for EAPIs
 listed in table~\ref{tab:removed-env-vars-table} as supporting 
\t{INSDESTTREE}\@. In all other
-EAPIs, this is retained as a conceptual variable not exported to the 
ebuild environment. \\
+EAPIs, this is retained as a conceptual variable inaccessible from the 
ebuild environment. \\
 \t{USE} &
 All &
 Yes &
@@ -373,11 +373,11 @@ This section discusses the handling of four variables:
 \begin{description}
 \item[IUSE] is the variable calculated from the \t{IUSE} values defined in 
ebuilds and eclasses.
 \item[IUSE_REFERENCEABLE] is a variable calculated from \t{IUSE} and a variety 
of other sources
-described below. It is purely a conceptual variable; it is not exported to 
the ebuild
+described below. It is purely a conceptual variable; it is inaccessible 
from the ebuild
 environment. Values in \t{IUSE_REFERENCEABLE} may legally be used in 
queries from other
 packages about an ebuild's state (for example, for use dependencies).
-\item[IUSE_EFFECTIVE] is another conceptual, unexported variable. Values in 
\t{IUSE_EFFECTIVE} are
-those which an ebuild may legally use in queries about itself (for 
example, for the \t{use}
+\item[IUSE_EFFECTIVE] is another conceptual, inaccessible variable. Values in 
\t{IUSE_EFFECTIVE}
+are those which an ebuild may legally use in queries about itself (for 
example, for the \t{use}
 function, and for use in dependency specification conditional blocks).
 \item[USE] is a variable calculated by the package manager and exported to the 
ebuild environment.
 \end{description}

diff --git a/ebuild-functions.tex b/ebuild-functions.tex
index 046a0a7..bf6b774 100644
--- a/ebuild-functions.tex
+++ b/ebuild-functions.tex
@@ -8,10 +8,10 @@ by the package manager as part of the build and/or install 
process. In all cases
 must provide a default implementation of these functions; unless otherwise 
stated this must be a
 no-op. All functions may assume that they have read access to all system 
libraries, binaries and
 configuration files that are accessible to normal users, as well as write 
access to the temporary
-directories specified by the \t{T}, \t{TMPDIR} and \t{HOME} environment 
variables
+directories specified by the \t{T}, \t{TMPDIR} and \t{HOME} variables
 (see section~\ref{sec:ebuild-env-vars}). Most functions must assume only that 
they have additional
-write access to the package's working directory (the \t{WORKDIR} environment 
variable); exceptions
-are noted below.
+write access to the package's working directory (the \t{WORKDIR} variable); 
exceptions are noted
+below.
 
 The environment for functions run outside of the build sequence (that is, 
\t{pkg_config},
 \t{pkg_info}, \t{pkg_prerm} and \t{pkg_postrm}) must be the environment used 
for the build of the
@@ -400,37 +400,37 @@ src_install() {
 
 The \t{pkg_preinst} function performs any special tasks that are required 
immediately before
 merging the package to the live filesystem. It must not write outside of the 
directories specified
-by the \t{ROOT} and \t{D} environment variables.
+by the \t{ROOT} and \t{D} variables.
 
 \t{pkg_preinst} must be run with full access to all files and directories 
below that specified by
-the \t{ROOT} and \t{D} environment variables.
+the \t{ROOT} and \t{D} variables.
 
 \subsection{pkg_postinst}
 
 The \t{pkg_postinst} function performs any special tasks that are required 
immediately after
 merging the package to the live filesystem. It must not write outside of the 
directory specified
-in the \t{ROOT} environment variable.
+in the \t{ROOT} variable.
 
 

[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-08 Thread Ulrich Müller
commit: 055403924457cdd7d168fb7a98d670d10376a20e
Author: Ulrich Müller  gentoo  org>
AuthorDate: Mon Jan 20 13:21:44 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Jun  8 20:36:17 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=05540392

EAPI 9 has ver_replacing

Bug: https://bugs.gentoo.org/947530
Signed-off-by: Ulrich Müller  gentoo.org>

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 7cfffd4..d303322 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -180,6 +180,9 @@ Controllable stripping & \compactfeatureref{dostrip} &
 \t{ver_*} commands & \compactfeatureref{ver-commands} &
 No & Yes & Yes & Yes \\
 
+\t{ver_replacing} & \compactfeatureref{ver-replacing} &
+No & No & No & Yes \\
+
 \t{unpack} support for \t{7z} & \compactfeatureref{unpack-extensions} &
 Yes & Yes & No & No \\
 
@@ -380,6 +383,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item \t{assert} banned, \featureref{banned-commands}.
 \item \t{domo} banned, \featureref{banned-commands}.
 \item \t{pipestatus}, \featureref{pipestatus}.
+\item \t{ver_replacing}, \featureref{ver-replacing}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index a2a1935..a49ab98 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -1101,20 +1101,32 @@ the second, inclusively.
 
 Both version strings must conform to the version specification in
 section~\ref{sec:version-spec}. Comparison is done using 
algorithm~\ref{alg:version-comparison}.
+
+\item[ver_replacing] \featurelabel{ver-replacing} Takes an operator and a 
version string as
+arguments, which follow the same specification as in \t{ver_test}. 
Iterates over the elements
+of \t{REPLACING_VERSIONS}, using \t{ver_test} to compare each element with 
the version string.
+Returns shell true (0) if the specified relation is fulfilled for any 
element. Note that if
+\t{REPLACING_VERSIONS} is empty, shell false (1) is returned.
+
+Only available in EAPIs listed in table~\ref{tab:version-commands} as 
supporting
+\t{ver_replacing}. The command is only meaningful in phases where 
\t{REPLACING_VERSIONS} is
+defined.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting version manipulation commands}
 \label{tab:version-commands}
-\begin{tabular}{}
+\begin{tabular}{l}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{c}{\textbf{\t{ver_cut}?}} &
   \multicolumn{1}{c}{\textbf{\t{ver_rs}?}} &
-  \multicolumn{1}{c}{\textbf{\t{ver_test}?}} \\
+  \multicolumn{1}{c}{\textbf{\t{ver_test}?}} &
+  \multicolumn{1}{c}{\textbf{\t{ver_replacing}?}} \\
   \midrule
-  0, 1, 2, 3, 4, 5, 6 & No  & No  & No  \\
-  7, 8, 9 & Yes & Yes & Yes \\
+  0, 1, 2, 3, 4, 5, 6 & No  & No  & No  & No  \\
+  7, 8& Yes & Yes & Yes & No  \\
+  9   & Yes & Yes & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-08 Thread Ulrich Müller
commit: 0c0bb972c0fa7dfa027e3e7c4a8276134fcefbaf
Author: Ulrich Müller  gentoo  org>
AuthorDate: Fri Nov 29 16:06:26 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Jun  8 20:36:16 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=0c0bb972

EAPI 9 has pipestatus

Bug: https://bugs.gentoo.org/566342
Signed-off-by: Ulrich Müller  gentoo.org>

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index dd3d03e..7cfffd4 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -144,6 +144,9 @@ Output commands use stdout & 
\compactfeatureref{output-no-stdout} &
 \t{die} in subshell & \compactfeatureref{subshell-die} &
 No & Yes & Yes & Yes \\
 
+\t{pipestatus} & \compactfeatureref{pipestatus} &
+No & No & No & Yes \\
+
 \t{econf -{}-datarootdir} & \compactfeatureref{econf-options} &
 No & No & Yes & Yes \\
 
@@ -376,6 +379,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item Variables no longer exported, \featureref{export-vars}.
 \item \t{assert} banned, \featureref{banned-commands}.
 \item \t{domo} banned, \featureref{banned-commands}.
+\item \t{pipestatus}, \featureref{pipestatus}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index c977d00..a2a1935 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -206,6 +206,11 @@ completing. Ebuilds must not run any of these commands 
once the current phase fu
 failure), calls \t{die}, passing any parameters to it.
 In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as per
 section~\ref{sec:banned-commands}.
+\item[pipestatus] \featurelabel{pipestatus} Checks the shell's pipe status 
array, i.\,e.\ the exit
+status of the command(s) in the most recently executed foreground 
pipeline. Returns shell true
+(0) if all elements are zero, or the last non-zero element otherwise. If 
called with \t{-v}
+as the first argument, also outputs the pipe status array as a 
space-separated list.
+Only available in EAPIs listed in table~\ref{tab:pipestatus} as supporting 
\t{pipestatus}.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{9}
@@ -224,6 +229,20 @@ completing. Ebuilds must not run any of these commands 
once the current phase fu
 \end{tabular}
 \end{centertable}
 
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{EAPIs supporting \t{pipestatus}}
+\label{tab:pipestatus}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Supports \t{pipestatus}?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7, 8 & No  \\
+  9 & Yes \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \subsection{Patch commands}
 These commands are used during the \t{src_prepare} phase to apply patches to 
the package's sources.
 Ebuilds must not run any of these commands once the current phase function has 
returned.



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-08 Thread Ulrich Müller
commit: dfef5c9b3719b8fabc19486a0b5348d824f268f4
Author: Ulrich Müller  gentoo  org>
AuthorDate: Tue Jan  7 17:13:28 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Jun  8 20:36:14 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=dfef5c9b

EAPI 9: Defined variables are no longer exported

Bug: https://bugs.gentoo.org/721088
Signed-off-by: Ulrich Müller  gentoo.org>

 eapi-differences.tex |  4 
 ebuild-env-vars.tex  | 36 +---
 ebuild-vars.tex  |  4 
 3 files changed, 37 insertions(+), 7 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 7243e1f..91c09a2 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -75,6 +75,9 @@ Accumulate \t{PROPERTIES} & 
\compactfeatureref{accumulate-vars} &
 Accumulate \t{RESTRICT} & \compactfeatureref{accumulate-vars} &
 No & No & Yes & Yes \\
 
+Export variables & \compactfeatureref{export-vars} &
+Yes & Yes & Yes & No \\
+
 \t{PORTDIR} & \compactfeatureref{portdir} &
 Yes & No & No & No \\
 
@@ -364,6 +367,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item Different default EAPI for profiles, \featureref{profile-eapi-default}.
 \item \t{use.stable} and \t{package.use.stable}, \featureref{use-stable}.
 \item Bash version is 5.2, \featureref{bash-version}.
+\item Variables no longer exported, \featureref{export-vars}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 268fa36..4f19d70 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -1,10 +1,10 @@
 \section{Defined variables}
 \label{sec:ebuild-env-vars}
 
-The package manager must define the following environment variables. Not all 
variables are
-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.
+The package manager must define the following variables. Not all variables are 
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}).
@@ -12,6 +12,26 @@ For example, \t{EBUILD_PHASE} is different for every phase, 
and \t{ROOT} may hav
 the various different \t{pkg_*} phases. Ebuilds must recalculate any variable 
they derive from an
 inconsistent variable.
 
+\featurelabel{export-vars} These variables are either exported to the 
environment or kept as
+unexported shell variables, as specified for EAPIs in 
table~\ref{tab:export-vars}; exceptions are
+\t{TMPDIR} and \t{HOME} which are always exported to the environment. In EAPIs 
where variables are
+not exported, the package manager must pass those that are required by 
ebuild-specific external
+commands (see section~\ref{sec:pkg-mgr-commands}) in an implementation-defined 
manner.
+
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{EAPIs with variables exported to the environment}
+\label{tab:export-vars}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Variables exported?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7, 8 & Yes \\
+  9 & No  \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \begin{landscape}
 % Reduce width of text area to make room for margin notes
 \addtolength{\hsize}{-25mm}
@@ -168,13 +188,15 @@ inconsistent variable.
 \t{TMPDIR} &
 All &
 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. \\
+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{TMPDIR} is always
+exported to the environment. \\
 \t{HOME} &
 All &
 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. \\
+ebuild that may read or modify the home directory. \t{HOME} is always 
exported to the
+environment. \\
 \t{EPREFIX} &
 All &
 Yes &

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index b030943..9979ce9 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -335,6 +335,10 @@ defined based upon any variant condition.}
 \end{tabular}
 \end{centertable}
 
+For EAPIs listed in table~\ref{tab:export-vars} with the property that 
variables are not exported,
+the package manager must not

[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-08 Thread Ulrich Müller
commit: 394c4d8755331c02dc66d0a67c18875c4c0463ca
Author: Ulrich Müller  gentoo  org>
AuthorDate: Mon Jan 13 21:14:36 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Jun  8 20:36:15 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=394c4d87

EAPI 9: Special profile variables are no longer exported

Bug: https://bugs.gentoo.org/948001
Signed-off-by: Ulrich Müller  gentoo.org>

 ebuild-env-vars.tex   | 10 --
 profile-variables.tex |  2 ++
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 4f19d70..1e2623b 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -354,8 +354,14 @@ commands (see section~\ref{sec:pkg-mgr-commands}) in an 
implementation-defined m
 \end{tabular}
 \end{centertable}
 
-Except where otherwise noted, all variables set in the active profiles' 
\t{make.defaults} files must
-be exported to the ebuild environment. \t{CHOST}, \t{CBUILD} and \t{CTARGET}, 
if not set by
+Variables listed in section~\ref{sec:specific-profile-vars} as having specific 
meanings or special
+handling, and that are set in the active profiles' \t{make.defaults} files, 
are either exported
+to the environment or kept as unexported shell variables, as specified for 
EAPIs in
+table~\ref{tab:export-vars}. To clarify, this behaviour is governed by the 
EAPI of the ebuild,
+not that of the profile.
+
+Except where otherwise noted, all other variables set in the active profiles' 
\t{make.defaults}
+files must be exported to the environment. \t{CHOST}, \t{CBUILD} and 
\t{CTARGET}, if not set by
 profiles, must contain either an appropriate machine tuple (the definition of 
appropriate is beyond
 the scope of this specification) or be unset.
 

diff --git a/profile-variables.tex b/profile-variables.tex
index f20fde4..ddcbd3a 100644
--- a/profile-variables.tex
+++ b/profile-variables.tex
@@ -69,6 +69,8 @@ completely override those in parent profiles.
 \end{centertable}
 
 \subsection{Specific variables and their meanings}
+\label{sec:specific-profile-vars}
+
 The following variables have specific meanings when set in profiles.
 \begin{description}
 \item[ARCH] The system's architecture. Must be a value listed in 
\t{profiles/arch.list}; see



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-08 Thread Ulrich Müller
commit: e7279cf516eb94a07bfb1fa99c9bd0f161bd865e
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sat May 17 06:33:24 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Jun  8 20:36:13 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=e7279cf5

EAPI 9 has use.stable and package.use.stable

Bug: https://bugs.gentoo.org/955833
Signed-off-by: Ulrich Müller  gentoo.org>

 eapi-differences.tex |  7 +++
 profiles.tex | 34 ++
 2 files changed, 41 insertions(+)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index f6aafe7..88be303 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,12 @@ Profile files as directories & 
\compactfeatureref{profile-file-dirs} &
 \t{package.provided} & \compactfeatureref{package-provided} &
 Optional & No & No & No \\
 
+\t{use.stable} & \compactfeatureref{use-stable} &
+No & No & No & Yes \\
+
+\t{package.use.stable} & \compactfeatureref{use-stable} &
+No & No & No & Yes \\
+
 Bash version & \compactfeatureref{bash-version} &
 4.2 & 4.2 & 5.0 & 5.0 \\
 
@@ -356,6 +362,7 @@ EAPI 9 is EAPI 8 with the following changes:
 
 \begin{compactitem}
 \item Different default EAPI for profiles, \featureref{profile-eapi-default}.
+\item \t{use.stable} and \t{package.use.stable}, \featureref{use-stable}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/profiles.tex b/profiles.tex
index d814c31..43b8763 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -165,6 +165,40 @@ specification, and then a space delimited list of USE 
flags to enable. A USE fla
 specification is limited to the forms defined by the directory's EAPI\@. In 
some EAPIs,
 \t{package.use} can be a directory instead of a regular file as per 
section~\ref{sec:line-stacking}.
 
+\subsection{use.stable and package.use.stable}
+\featurelabel{use-stable} The \t{use.stable} and \t{package.use.stable} files 
may be used to
+override the default USE flags specified by \t{make.defaults}. They only apply 
to packages that
+are merged due to a stable keyword in the sense of section~\ref{sec:keywords}. 
Each line in
+\t{use.stable} contains a USE flag to enable; the \t{-flag} syntax indicates 
that the flag should
+be disabled. The \t{package.use.stable} file uses the same format as 
\t{package.use}.
+\t{USE_EXPAND} values may be enabled or disabled by using 
\t{expand_name_value}.
+
+Stable restrictions are applied exactly when the following condition holds: If 
every stable keyword
+in \t{KEYWORDS} were replaced with its tilde-prefixed counterpart (see 
section~\ref{sec:keywords}),
+then the resulting \t{KEYWORDS} setting would prevent installation of the 
package.
+
+If a flag appears in more than one of \t{package.use}, \t{use.stable} and 
\t{package.use.stable},
+then \t{package.use.stable} takes precedence over \t{package.use}, which in 
turn takes precedence
+over \t{use.stable}.
+
+These files are supported in EAPIs as per table~\ref{tab:profile-use-stable}. 
They can be
+directories instead of regular files as per section~\ref{sec:line-stacking}.
+
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{Profile directory support for \t{use.stable} and 
\t{package.use.stable}}
+\label{tab:profile-use-stable}
+\begin{tabular}{lll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Supports \t{use.stable}?}} &
+  \multicolumn{1}{c}{\textbf{Supports \t{package.use.stable}?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7, 8 & No  & No  \\
+  9 & Yes & Yes \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \subsection{USE masking and forcing}
 \label{sec:use-masking}
 This section covers the eight files \t{use.mask}, \t{use.force}, 
\t{use.stable.mask},



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-06-08 Thread Ulrich Müller
commit: 1bbeccce36669683750301c733727400f9bfc059
Author: Ulrich Müller  gentoo  org>
AuthorDate: Mon Feb 21 18:32:43 2022 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Jun  8 20:36:13 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=1bbeccce

EAPI 9 profile EAPI defaults to top-level

Bug: https://bugs.gentoo.org/806181
Signed-off-by: Ulrich Müller  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 fbe375e..d814c31 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



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-05-25 Thread Ulrich Müller
commit: c09112f688157123de2ec5da99b31e0a0e81
Author: Ulrich Müller  gentoo  org>
AuthorDate: Mon Feb 21 18:32:43 2022 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun May 25 16:46:11 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=c09112f6

EAPI 9 profile EAPI defaults to top-level

Bug: https://bugs.gentoo.org/806181
Signed-off-by: Ulrich Müller  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 4b0a0ff..0564ab4 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 \\
 
@@ -353,6 +356,7 @@ EAPI 9 is EAPI 8 with the following changes:
 
 \begin{compactitem}
 \item Bash version is 5.2, \featureref{bash-version}.
+\item Different default EAPI for profiles, \featureref{profile-eapi-default}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/profiles.tex b/profiles.tex
index fbe375e..d814c31 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



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-05-25 Thread Ulrich Müller
commit: 691aa893d6483d30c7f87e1fec879366e261ca8f
Author: Ulrich Müller  gentoo  org>
AuthorDate: Mon May 12 18:14:14 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun May 25 16:46:16 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=691aa893

EAPI 9 has edo

Bug: https://bugs.gentoo.org/744880
Signed-off-by: Ulrich Müller  gentoo.org>

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 4f9ea29..dbd9b71 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -186,6 +186,9 @@ Controllable stripping & \compactfeatureref{dostrip} &
 \t{unpack} support for \t{rar} & \compactfeatureref{unpack-extensions} &
 Yes & Yes & No & No \\
 
+\t{edo} & \compactfeatureref{edo} &
+No & No & No & Yes \\
+
 \end{longtable}
 
 \chapter{Differences between EAPIs}
@@ -377,6 +380,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item \t{domo} banned, \featureref{banned-commands}.
 \item \t{pipestatus}, \featureref{pipestatus}.
 \item \t{ver_replacing}, \featureref{ver-replacing}.
+\item \t{edo}, \featureref{edo}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index a49ab98..a4c59fa 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -1301,21 +1301,32 @@ has returned.
 \end{algorithmic}
 \end{algorithm}
 
+\item[edo] \featurelabel{edo} Takes one or more arguments. The entire argument 
list is output
+as an informational message to stderr; individual tokens may be reformatted to 
avoid ambiguity.
+The first argument is then executed as a command, with the remaining arguments 
passed to it.
+If the command fails, \t{edo} aborts the build process using \t{die}, unless 
it was called under
+\t{nonfatal}, in which case it returns a non-zero exit status.
+
+\t{edo} must be implemented internally as a shell function. Only available in 
EAPIs listed in
+table~\ref{tab:misc-commands} as supporting \t{edo}.
+
 \end{description}
 
 \ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Misc commands for EAPIs}
 \label{tab:misc-commands}
-\begin{tabular}{}
+\begin{tabular}{l}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{c}{\textbf{\t{default}?}} &
   \multicolumn{1}{c}{\textbf{\t{einstalldocs}?}} &
-  \multicolumn{1}{c}{\textbf{\t{get_libdir}?}} \\
+  \multicolumn{1}{c}{\textbf{\t{get_libdir}?}} &
+  \multicolumn{1}{c}{\textbf{\t{edo}?}} \\
   \midrule
-  0, 1  & No  & No  & No  \\
-  2, 3, 4, 5& Yes & No  & No  \\
-  6, 7, 8, 9& Yes & Yes & Yes \\
+  0, 1  & No  & No  & No  & No  \\
+  2, 3, 4, 5& Yes & No  & No  & No  \\
+  6, 7, 8   & Yes & Yes & Yes & No  \\
+  9 & Yes & Yes & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-05-25 Thread Ulrich Müller
commit: 89af810629ec15b741bb43bc20a26f95b6373f68
Author: Ulrich Müller  gentoo  org>
AuthorDate: Mon Jan 13 21:14:36 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun May 25 16:46:13 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=89af8106

EAPI 9: Special profile variables are no longer exported

Bug: https://bugs.gentoo.org/948001
Signed-off-by: Ulrich Müller  gentoo.org>

 ebuild-env-vars.tex   | 10 --
 profile-variables.tex |  2 ++
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 4f19d70..1e2623b 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -354,8 +354,14 @@ commands (see section~\ref{sec:pkg-mgr-commands}) in an 
implementation-defined m
 \end{tabular}
 \end{centertable}
 
-Except where otherwise noted, all variables set in the active profiles' 
\t{make.defaults} files must
-be exported to the ebuild environment. \t{CHOST}, \t{CBUILD} and \t{CTARGET}, 
if not set by
+Variables listed in section~\ref{sec:specific-profile-vars} as having specific 
meanings or special
+handling, and that are set in the active profiles' \t{make.defaults} files, 
are either exported
+to the environment or kept as unexported shell variables, as specified for 
EAPIs in
+table~\ref{tab:export-vars}. To clarify, this behaviour is governed by the 
EAPI of the ebuild,
+not that of the profile.
+
+Except where otherwise noted, all other variables set in the active profiles' 
\t{make.defaults}
+files must be exported to the environment. \t{CHOST}, \t{CBUILD} and 
\t{CTARGET}, if not set by
 profiles, must contain either an appropriate machine tuple (the definition of 
appropriate is beyond
 the scope of this specification) or be unset.
 

diff --git a/profile-variables.tex b/profile-variables.tex
index f20fde4..ddcbd3a 100644
--- a/profile-variables.tex
+++ b/profile-variables.tex
@@ -69,6 +69,8 @@ completely override those in parent profiles.
 \end{centertable}
 
 \subsection{Specific variables and their meanings}
+\label{sec:specific-profile-vars}
+
 The following variables have specific meanings when set in profiles.
 \begin{description}
 \item[ARCH] The system's architecture. Must be a value listed in 
\t{profiles/arch.list}; see



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-05-25 Thread Ulrich Müller
commit: 71b2763075b09c2939ac385d5bf099a7c7317f18
Author: Ulrich Müller  gentoo  org>
AuthorDate: Mon May 12 18:13:01 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun May 25 16:46:14 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=71b27630

EAPI 9 bans domo

Bug: https://bugs.gentoo.org/951502
Signed-off-by: Ulrich Müller  gentoo.org>

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index dadda01..36d5462 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -123,6 +123,9 @@ GNU \t{patch} version & \compactfeatureref{gnu-patch} &
 \t{assert} & \compactfeatureref{banned-commands} &
 Yes & Yes & Yes & Banned \\
 
+\t{domo} & \compactfeatureref{banned-commands} &
+Yes & Yes & Yes & Banned \\
+
 Query command options & \compactfeatureref{pm-query-options} &
 \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} & \t{-b}, \t{-d}, \t{-r} & 
\t{-b}, \t{-d}, \t{-r} \\
 
@@ -365,6 +368,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item Different default EAPI for profiles, \featureref{profile-eapi-default}.
 \item Variables no longer exported, \featureref{export-vars}.
 \item \t{assert} banned, \featureref{banned-commands}.
+\item \t{domo} banned, \featureref{banned-commands}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 3dfc3e1..c977d00 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -81,11 +81,12 @@ called, the package manager must abort the build process 
indicating an error.
   \multicolumn{1}{c}{\textbf{\t{useq}}} &
   \multicolumn{1}{c}{\textbf{\t{hasv}}} &
   \multicolumn{1}{c}{\textbf{\t{hasq}}} &
-  \multicolumn{1}{c}{\textbf{\t{assert}}} & & \\
+  \multicolumn{1}{c}{\textbf{\t{assert}}} &
+  \multicolumn{1}{c}{\textbf{\t{domo}}} & \\
   \midrule
-  0, 1, 2, 3, 4, 5, 6, 7  & No  & No  & No  & No  & & \\
-  8   & Yes & Yes & Yes & No  & & \\
-  9   & Yes & Yes & Yes & Yes & & \\
+  0, 1, 2, 3, 4, 5, 6, 7  & No  & No  & No  & No  & No  & \\
+  8   & Yes & Yes & Yes & No  & No  & \\
+  9   & Yes & Yes & Yes & Yes & Yes & \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -589,6 +590,8 @@ the current phase function has returned.
 is the package name with \t{.mo} appended. Failure behaviour is EAPI 
dependent as per
 section~\ref{sec:failure-behaviour}. The locale tree location is EAPI 
dependent as per
 table~\ref{tab:domo-path}.
+In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as per
+section~\ref{sec:banned-commands}.
 
 \item[dosbin] As \t{dobin}, but installs to \t{DESTTREE/sbin}.
 



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-05-25 Thread Ulrich Müller
commit: 4ab9ad258c6bd38dcdcb1749f15ce7dd086a1ffd
Author: Ulrich Müller  gentoo  org>
AuthorDate: Tue Jan  7 17:13:28 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun May 25 16:46:12 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=4ab9ad25

EAPI 9: Defined variables are no longer exported

Bug: https://bugs.gentoo.org/721088
Signed-off-by: Ulrich Müller  gentoo.org>

 eapi-differences.tex |  4 
 ebuild-env-vars.tex  | 36 +---
 ebuild-vars.tex  |  4 
 3 files changed, 37 insertions(+), 7 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 0564ab4..75c53a0 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -69,6 +69,9 @@ Accumulate \t{PROPERTIES} & 
\compactfeatureref{accumulate-vars} &
 Accumulate \t{RESTRICT} & \compactfeatureref{accumulate-vars} &
 No & No & Yes & Yes \\
 
+Export variables & \compactfeatureref{export-vars} &
+Yes & Yes & Yes & No \\
+
 \t{PORTDIR} & \compactfeatureref{portdir} &
 Yes & No & No & No \\
 
@@ -357,6 +360,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \begin{compactitem}
 \item Bash version is 5.2, \featureref{bash-version}.
 \item Different default EAPI for profiles, \featureref{profile-eapi-default}.
+\item Variables no longer exported, \featureref{export-vars}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 268fa36..4f19d70 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -1,10 +1,10 @@
 \section{Defined variables}
 \label{sec:ebuild-env-vars}
 
-The package manager must define the following environment variables. Not all 
variables are
-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.
+The package manager must define the following variables. Not all variables are 
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}).
@@ -12,6 +12,26 @@ For example, \t{EBUILD_PHASE} is different for every phase, 
and \t{ROOT} may hav
 the various different \t{pkg_*} phases. Ebuilds must recalculate any variable 
they derive from an
 inconsistent variable.
 
+\featurelabel{export-vars} These variables are either exported to the 
environment or kept as
+unexported shell variables, as specified for EAPIs in 
table~\ref{tab:export-vars}; exceptions are
+\t{TMPDIR} and \t{HOME} which are always exported to the environment. In EAPIs 
where variables are
+not exported, the package manager must pass those that are required by 
ebuild-specific external
+commands (see section~\ref{sec:pkg-mgr-commands}) in an implementation-defined 
manner.
+
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{EAPIs with variables exported to the environment}
+\label{tab:export-vars}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Variables exported?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7, 8 & Yes \\
+  9 & No  \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \begin{landscape}
 % Reduce width of text area to make room for margin notes
 \addtolength{\hsize}{-25mm}
@@ -168,13 +188,15 @@ inconsistent variable.
 \t{TMPDIR} &
 All &
 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. \\
+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{TMPDIR} is always
+exported to the environment. \\
 \t{HOME} &
 All &
 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. \\
+ebuild that may read or modify the home directory. \t{HOME} is always 
exported to the
+environment. \\
 \t{EPREFIX} &
 All &
 Yes &

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index b030943..9979ce9 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -335,6 +335,10 @@ defined based upon any variant condition.}
 \end{tabular}
 \end{centertable}
 
+For EAPIs listed in table~\ref{tab:export-vars} with the property that 
variables are not exported,
+the package manager must not export any of the variables specified in this 
sectio

[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-05-25 Thread Ulrich Müller
commit: aa35851260ef7e91c0e694bab76722adab14d78f
Author: Ulrich Müller  gentoo  org>
AuthorDate: Tue Jan  7 17:09:52 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun May 25 16:46:12 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=aa358512

Clarify use of the terms "export" and "environment variable"

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

 ebuild-env-vars.tex  | 12 ++--
 ebuild-functions.tex | 22 +++---
 ebuild-vars.tex  |  4 ++--
 3 files changed, 19 insertions(+), 19 deletions(-)

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 861dd48..268fa36 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -211,14 +211,14 @@ inconsistent variable.
 No &
 \featurelabel{desttree} Controls the location where \t{dobin}, \t{dolib}, 
\t{domo},
 and \t{dosbin} install things. Only for EAPIs listed in 
table~\ref{tab:removed-env-vars-table}
-as supporting \t{DESTTREE}\@. In all other EAPIs, this is retained as a 
conceptual variable not
-exported to the ebuild environment. \\
+as supporting \t{DESTTREE}\@. In all other EAPIs, this is retained as a 
conceptual variable
+inaccessible from the ebuild environment. \\
 \t{INSDESTTREE} &
 \t{src_install} &
 No &
 \featurelabel{insdesttree} Controls the location where \t{doins} installs 
things. Only for EAPIs
 listed in table~\ref{tab:removed-env-vars-table} as supporting 
\t{INSDESTTREE}\@. In all other
-EAPIs, this is retained as a conceptual variable not exported to the 
ebuild environment. \\
+EAPIs, this is retained as a conceptual variable inaccessible from the 
ebuild environment. \\
 \t{USE} &
 All &
 Yes &
@@ -373,11 +373,11 @@ This section discusses the handling of four variables:
 \begin{description}
 \item[IUSE] is the variable calculated from the \t{IUSE} values defined in 
ebuilds and eclasses.
 \item[IUSE_REFERENCEABLE] is a variable calculated from \t{IUSE} and a variety 
of other sources
-described below. It is purely a conceptual variable; it is not exported to 
the ebuild
+described below. It is purely a conceptual variable; it is inaccessible 
from the ebuild
 environment. Values in \t{IUSE_REFERENCEABLE} may legally be used in 
queries from other
 packages about an ebuild's state (for example, for use dependencies).
-\item[IUSE_EFFECTIVE] is another conceptual, unexported variable. Values in 
\t{IUSE_EFFECTIVE} are
-those which an ebuild may legally use in queries about itself (for 
example, for the \t{use}
+\item[IUSE_EFFECTIVE] is another conceptual, inaccessible variable. Values in 
\t{IUSE_EFFECTIVE}
+are those which an ebuild may legally use in queries about itself (for 
example, for the \t{use}
 function, and for use in dependency specification conditional blocks).
 \item[USE] is a variable calculated by the package manager and exported to the 
ebuild environment.
 \end{description}

diff --git a/ebuild-functions.tex b/ebuild-functions.tex
index 046a0a7..bf6b774 100644
--- a/ebuild-functions.tex
+++ b/ebuild-functions.tex
@@ -8,10 +8,10 @@ by the package manager as part of the build and/or install 
process. In all cases
 must provide a default implementation of these functions; unless otherwise 
stated this must be a
 no-op. All functions may assume that they have read access to all system 
libraries, binaries and
 configuration files that are accessible to normal users, as well as write 
access to the temporary
-directories specified by the \t{T}, \t{TMPDIR} and \t{HOME} environment 
variables
+directories specified by the \t{T}, \t{TMPDIR} and \t{HOME} variables
 (see section~\ref{sec:ebuild-env-vars}). Most functions must assume only that 
they have additional
-write access to the package's working directory (the \t{WORKDIR} environment 
variable); exceptions
-are noted below.
+write access to the package's working directory (the \t{WORKDIR} variable); 
exceptions are noted
+below.
 
 The environment for functions run outside of the build sequence (that is, 
\t{pkg_config},
 \t{pkg_info}, \t{pkg_prerm} and \t{pkg_postrm}) must be the environment used 
for the build of the
@@ -400,37 +400,37 @@ src_install() {
 
 The \t{pkg_preinst} function performs any special tasks that are required 
immediately before
 merging the package to the live filesystem. It must not write outside of the 
directories specified
-by the \t{ROOT} and \t{D} environment variables.
+by the \t{ROOT} and \t{D} variables.
 
 \t{pkg_preinst} must be run with full access to all files and directories 
below that specified by
-the \t{ROOT} and \t{D} environment variables.
+the \t{ROOT} and \t{D} variables.
 
 \subsection{pkg_postinst}
 
 The \t{pkg_postinst} function performs any special tasks that are required 
immediately after
 merging the package to the live filesystem. It must not write outside of the 
directory specified
-in the \t{ROOT} environment variable.
+in the \t{ROOT} variable.
 
 

[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-05-25 Thread Ulrich Müller
commit: f6df176742725c3cdfe02b08efcea109dd05053a
Author: Ulrich Müller  gentoo  org>
AuthorDate: Thu Jun 20 18:16:12 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun May 25 16:46:16 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=f6df1767

EAPI 9 no longer rewrites absolute symlinks

Bug: https://bugs.gentoo.org/934514
Signed-off-by: Ulrich Müller  gentoo.org>

 eapi-differences.tex |  4 
 merge.tex| 19 +--
 2 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index dbd9b71..0134657 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -189,6 +189,9 @@ Controllable stripping & \compactfeatureref{dostrip} &
 \t{edo} & \compactfeatureref{edo} &
 No & No & No & Yes \\
 
+Absolute symlink rewriting & \compactfeatureref{symlink-rewrite} &
+Yes & Yes & Yes & No \\
+
 \end{longtable}
 
 \chapter{Differences between EAPIs}
@@ -381,6 +384,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item \t{pipestatus}, \featureref{pipestatus}.
 \item \t{ver_replacing}, \featureref{ver-replacing}.
 \item \t{edo}, \featureref{edo}.
+\item Absolute symlinks no longer 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}
 



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-05-25 Thread Ulrich Müller
commit: 729a6bda7b298d14f6d26638d0610aac43ea2317
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sat May 17 06:33:24 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun May 25 16:46:17 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=729a6bda

EAPI 9 has use.stable and package.use.stable

Bug: https://bugs.gentoo.org/955833
Signed-off-by: Ulrich Müller  gentoo.org>

 eapi-differences.tex |  7 +++
 profiles.tex | 34 ++
 2 files changed, 41 insertions(+)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 0134657..1099a5c 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,12 @@ Profile files as directories & 
\compactfeatureref{profile-file-dirs} &
 \t{package.provided} & \compactfeatureref{package-provided} &
 Optional & No & No & No \\
 
+\t{use.stable} & \compactfeatureref{use-stable} &
+No & No & No & Yes \\
+
+\t{package.use.stable} & \compactfeatureref{use-stable} &
+No & No & No & Yes \\
+
 Bash version & \compactfeatureref{bash-version} &
 4.2 & 4.2 & 5.0 & 5.2 \\
 
@@ -378,6 +384,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \begin{compactitem}
 \item Bash version is 5.2, \featureref{bash-version}.
 \item Different default EAPI for profiles, \featureref{profile-eapi-default}.
+\item \t{use.stable} and \t{package.use.stable}, \featureref{use-stable}.
 \item Variables no longer exported, \featureref{export-vars}.
 \item \t{assert} banned, \featureref{banned-commands}.
 \item \t{domo} banned, \featureref{banned-commands}.

diff --git a/profiles.tex b/profiles.tex
index d814c31..43b8763 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -165,6 +165,40 @@ specification, and then a space delimited list of USE 
flags to enable. A USE fla
 specification is limited to the forms defined by the directory's EAPI\@. In 
some EAPIs,
 \t{package.use} can be a directory instead of a regular file as per 
section~\ref{sec:line-stacking}.
 
+\subsection{use.stable and package.use.stable}
+\featurelabel{use-stable} The \t{use.stable} and \t{package.use.stable} files 
may be used to
+override the default USE flags specified by \t{make.defaults}. They only apply 
to packages that
+are merged due to a stable keyword in the sense of section~\ref{sec:keywords}. 
Each line in
+\t{use.stable} contains a USE flag to enable; the \t{-flag} syntax indicates 
that the flag should
+be disabled. The \t{package.use.stable} file uses the same format as 
\t{package.use}.
+\t{USE_EXPAND} values may be enabled or disabled by using 
\t{expand_name_value}.
+
+Stable restrictions are applied exactly when the following condition holds: If 
every stable keyword
+in \t{KEYWORDS} were replaced with its tilde-prefixed counterpart (see 
section~\ref{sec:keywords}),
+then the resulting \t{KEYWORDS} setting would prevent installation of the 
package.
+
+If a flag appears in more than one of \t{package.use}, \t{use.stable} and 
\t{package.use.stable},
+then \t{package.use.stable} takes precedence over \t{package.use}, which in 
turn takes precedence
+over \t{use.stable}.
+
+These files are supported in EAPIs as per table~\ref{tab:profile-use-stable}. 
They can be
+directories instead of regular files as per section~\ref{sec:line-stacking}.
+
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{Profile directory support for \t{use.stable} and 
\t{package.use.stable}}
+\label{tab:profile-use-stable}
+\begin{tabular}{lll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Supports \t{use.stable}?}} &
+  \multicolumn{1}{c}{\textbf{Supports \t{package.use.stable}?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7, 8 & No  & No  \\
+  9 & Yes & Yes \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \subsection{USE masking and forcing}
 \label{sec:use-masking}
 This section covers the eight files \t{use.mask}, \t{use.force}, 
\t{use.stable.mask},



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-05-25 Thread Ulrich Müller
commit: f73b0482a7b1e41049704a374550d9160e028971
Author: Ulrich Müller  gentoo  org>
AuthorDate: Tue Aug  3 16:32:47 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun May 25 16:46:10 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=f73b0482

Add an EAPI 9 identical to EAPI 8

Signed-off-by: Ulrich Müller  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 c1f7d6a..a826355 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 

[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-05-25 Thread Ulrich Müller
commit: bbed4e814a4d45711598424a597f7ecb61e80ffa
Author: Ulrich Müller  gentoo  org>
AuthorDate: Mon Jan 20 13:21:44 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun May 25 16:46:15 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=bbed4e81

EAPI 9 has ver_replacing

Bug: https://bugs.gentoo.org/947530
Signed-off-by: Ulrich Müller  gentoo.org>

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 7ed588e..4f9ea29 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -174,6 +174,9 @@ Controllable stripping & \compactfeatureref{dostrip} &
 \t{ver_*} commands & \compactfeatureref{ver-commands} &
 No & Yes & Yes & Yes \\
 
+\t{ver_replacing} & \compactfeatureref{ver-replacing} &
+No & No & No & Yes \\
+
 \t{unpack} support for \t{7z} & \compactfeatureref{unpack-extensions} &
 Yes & Yes & No & No \\
 
@@ -373,6 +376,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item \t{assert} banned, \featureref{banned-commands}.
 \item \t{domo} banned, \featureref{banned-commands}.
 \item \t{pipestatus}, \featureref{pipestatus}.
+\item \t{ver_replacing}, \featureref{ver-replacing}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index a2a1935..a49ab98 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -1101,20 +1101,32 @@ the second, inclusively.
 
 Both version strings must conform to the version specification in
 section~\ref{sec:version-spec}. Comparison is done using 
algorithm~\ref{alg:version-comparison}.
+
+\item[ver_replacing] \featurelabel{ver-replacing} Takes an operator and a 
version string as
+arguments, which follow the same specification as in \t{ver_test}. 
Iterates over the elements
+of \t{REPLACING_VERSIONS}, using \t{ver_test} to compare each element with 
the version string.
+Returns shell true (0) if the specified relation is fulfilled for any 
element. Note that if
+\t{REPLACING_VERSIONS} is empty, shell false (1) is returned.
+
+Only available in EAPIs listed in table~\ref{tab:version-commands} as 
supporting
+\t{ver_replacing}. The command is only meaningful in phases where 
\t{REPLACING_VERSIONS} is
+defined.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting version manipulation commands}
 \label{tab:version-commands}
-\begin{tabular}{}
+\begin{tabular}{l}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{c}{\textbf{\t{ver_cut}?}} &
   \multicolumn{1}{c}{\textbf{\t{ver_rs}?}} &
-  \multicolumn{1}{c}{\textbf{\t{ver_test}?}} \\
+  \multicolumn{1}{c}{\textbf{\t{ver_test}?}} &
+  \multicolumn{1}{c}{\textbf{\t{ver_replacing}?}} \\
   \midrule
-  0, 1, 2, 3, 4, 5, 6 & No  & No  & No  \\
-  7, 8, 9 & Yes & Yes & Yes \\
+  0, 1, 2, 3, 4, 5, 6 & No  & No  & No  & No  \\
+  7, 8& Yes & Yes & Yes & No  \\
+  9   & Yes & Yes & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-05-25 Thread Ulrich Müller
commit: 3e6ea5b25374ea8cd603c4300eabb9869033b68f
Author: Ulrich Müller  gentoo  org>
AuthorDate: Fri Nov 29 16:06:26 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun May 25 16:46:15 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=3e6ea5b2

EAPI 9 has pipestatus

Bug: https://bugs.gentoo.org/566342
Signed-off-by: Ulrich Müller  gentoo.org>

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 36d5462..7ed588e 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -138,6 +138,9 @@ Output commands use stdout & 
\compactfeatureref{output-no-stdout} &
 \t{die} in subshell & \compactfeatureref{subshell-die} &
 No & Yes & Yes & Yes \\
 
+\t{pipestatus} & \compactfeatureref{pipestatus} &
+No & No & No & Yes \\
+
 \t{econf -{}-datarootdir} & \compactfeatureref{econf-options} &
 No & No & Yes & Yes \\
 
@@ -369,6 +372,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item Variables no longer exported, \featureref{export-vars}.
 \item \t{assert} banned, \featureref{banned-commands}.
 \item \t{domo} banned, \featureref{banned-commands}.
+\item \t{pipestatus}, \featureref{pipestatus}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index c977d00..a2a1935 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -206,6 +206,11 @@ completing. Ebuilds must not run any of these commands 
once the current phase fu
 failure), calls \t{die}, passing any parameters to it.
 In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as per
 section~\ref{sec:banned-commands}.
+\item[pipestatus] \featurelabel{pipestatus} Checks the shell's pipe status 
array, i.\,e.\ the exit
+status of the command(s) in the most recently executed foreground 
pipeline. Returns shell true
+(0) if all elements are zero, or the last non-zero element otherwise. If 
called with \t{-v}
+as the first argument, also outputs the pipe status array as a 
space-separated list.
+Only available in EAPIs listed in table~\ref{tab:pipestatus} as supporting 
\t{pipestatus}.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{9}
@@ -224,6 +229,20 @@ completing. Ebuilds must not run any of these commands 
once the current phase fu
 \end{tabular}
 \end{centertable}
 
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{EAPIs supporting \t{pipestatus}}
+\label{tab:pipestatus}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Supports \t{pipestatus}?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7, 8 & No  \\
+  9 & Yes \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \subsection{Patch commands}
 These commands are used during the \t{src_prepare} phase to apply patches to 
the package's sources.
 Ebuilds must not run any of these commands once the current phase function has 
returned.



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-05-25 Thread Ulrich Müller
commit: a2a026d77fd34d33311b408e175d7fe46865674c
Author: Ulrich Müller  gentoo  org>
AuthorDate: Fri Nov 29 16:02:56 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun May 25 16:46:13 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=a2a026d7

EAPI 9 bans assert

Bug: https://bugs.gentoo.org/566342
Signed-off-by: Ulrich Müller  gentoo.org>

 eapi-differences.tex |  4 
 pkg-mgr-commands.tex | 10 +++---
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 75c53a0..dadda01 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -120,6 +120,9 @@ GNU \t{patch} version & \compactfeatureref{gnu-patch} &
 \t{hasq} & \compactfeatureref{banned-commands} &
 Yes & Yes & Banned & Banned \\
 
+\t{assert} & \compactfeatureref{banned-commands} &
+Yes & Yes & Yes & Banned \\
+
 Query command options & \compactfeatureref{pm-query-options} &
 \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} & \t{-b}, \t{-d}, \t{-r} & 
\t{-b}, \t{-d}, \t{-r} \\
 
@@ -361,6 +364,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item Bash version is 5.2, \featureref{bash-version}.
 \item Different default EAPI for profiles, \featureref{profile-eapi-default}.
 \item Variables no longer exported, \featureref{export-vars}.
+\item \t{assert} banned, \featureref{banned-commands}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 878d1eb..3dfc3e1 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -80,10 +80,12 @@ called, the package manager must abort the build process 
indicating an error.
   \multicolumn{1}{c}{} &
   \multicolumn{1}{c}{\textbf{\t{useq}}} &
   \multicolumn{1}{c}{\textbf{\t{hasv}}} &
-  \multicolumn{1}{c}{\textbf{\t{hasq}}} & & & \\
+  \multicolumn{1}{c}{\textbf{\t{hasq}}} &
+  \multicolumn{1}{c}{\textbf{\t{assert}}} & & \\
   \midrule
-  0, 1, 2, 3, 4, 5, 6, 7  & No  & No  & No  & & & \\
-  8, 9& Yes & Yes & Yes & & & \\
+  0, 1, 2, 3, 4, 5, 6, 7  & No  & No  & No  & No  & & \\
+  8   & Yes & Yes & Yes & No  & & \\
+  9   & Yes & Yes & Yes & Yes & & \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -201,6 +203,8 @@ completing. Ebuilds must not run any of these commands once 
the current phase fu
 environment.
 \item[assert] Checks the shell's pipe status array, and if any element is 
non-zero (indicating
 failure), calls \t{die}, passing any parameters to it.
+In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as per
+section~\ref{sec:banned-commands}.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{9}



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-05-25 Thread Ulrich Müller
commit: 780b628d548ab66703c99ff15288a52d2866d3c5
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sat Jan 11 09:47:19 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun May 25 16:46:11 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=780b628d

EAPI 9: Bash version is 5.2

Bug: https://bugs.gentoo.org/946193
Signed-off-by: Ulrich Müller  gentoo.org>

 eapi-differences.tex | 4 ++--
 ebuild-format.tex| 3 ++-
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 9617dc4..4b0a0ff 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -39,7 +39,7 @@ Profile files as directories & 
\compactfeatureref{profile-file-dirs} &
 Optional & No & No & No \\
 
 Bash version & \compactfeatureref{bash-version} &
-4.2 & 4.2 & 5.0 & 5.0 \\
+4.2 & 4.2 & 5.0 & 5.2 \\
 
 Selective URI restrictions & \compactfeatureref{uri-restrict} &
 No & No & Yes & Yes \\
@@ -352,7 +352,7 @@ EAPI 8 is EAPI 7 with the following changes:
 EAPI 9 is EAPI 8 with the following changes:
 
 \begin{compactitem}
-\item None
+\item Bash version is 5.2, \featureref{bash-version}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/ebuild-format.tex b/ebuild-format.tex
index 844f01a..a543013 100644
--- a/ebuild-format.tex
+++ b/ebuild-format.tex
@@ -32,7 +32,8 @@ 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, 9  & 5.0 & Yes \\
+  8 & 5.0 & Yes \\
+  9 & 5.2 & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-02-09 Thread Ulrich Müller
commit: 4239e994451721a394c375d68aca1dc04756ca2d
Author: Ulrich Müller  gentoo  org>
AuthorDate: Thu Jun 20 18:16:12 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Feb  9 20:34:12 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=4239e994

EAPI 9 no longer rewrites absolute symlinks

Bug: https://bugs.gentoo.org/934514
Signed-off-by: Ulrich Müller  gentoo.org>

 eapi-differences.tex |  4 
 merge.tex| 19 +--
 2 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 75e80f0..1f08e66 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -183,6 +183,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}
@@ -373,6 +376,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item \t{assert} banned, \featureref{banned-commands}.
 \item \t{pipestatus}, \featureref{pipestatus}.
 \item \t{ver_replacing}, \featureref{ver-replacing}.
+\item Absolute symlinks no longer 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}
 



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-02-09 Thread Ulrich Müller
commit: 1f6b1818a65d83ab6703ff2be6751ab4beaaf8df
Author: Ulrich Müller  gentoo  org>
AuthorDate: Mon Jan 20 13:21:44 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Feb  9 20:33:54 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=1f6b1818

EAPI 9 has ver_replacing

Bug: https://bugs.gentoo.org/947530
Signed-off-by: Ulrich Müller  gentoo.org>

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 7b978ea..75e80f0 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -171,6 +171,9 @@ Controllable stripping & \compactfeatureref{dostrip} &
 \t{ver_*} commands & \compactfeatureref{ver-commands} &
 No & Yes & Yes & Yes \\
 
+\t{ver_replacing} & \compactfeatureref{ver-replacing} &
+No & No & No & Yes \\
+
 \t{unpack} support for \t{7z} & \compactfeatureref{unpack-extensions} &
 Yes & Yes & No & No \\
 
@@ -369,6 +372,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item Variables no longer exported, \featureref{export-vars}.
 \item \t{assert} banned, \featureref{banned-commands}.
 \item \t{pipestatus}, \featureref{pipestatus}.
+\item \t{ver_replacing}, \featureref{ver-replacing}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 3c03f0b..bff6346 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -1098,20 +1098,32 @@ the second, inclusively.
 
 Both version strings must conform to the version specification in
 section~\ref{sec:version-spec}. Comparison is done using 
algorithm~\ref{alg:version-comparison}.
+
+\item[ver_replacing] \featurelabel{ver-replacing} Takes an operator and a 
version string as
+arguments, which follow the same specification as in \t{ver_test}. 
Iterates over the elements
+of \t{REPLACING_VERSIONS}, using \t{ver_test} to compare each element with 
the version string.
+Returns shell true (0) if the specified relation is fulfilled for any 
element. Note that if
+\t{REPLACING_VERSIONS} is empty, shell false (1) is returned.
+
+Only available in EAPIs listed in table~\ref{tab:version-commands} as 
supporting
+\t{ver_replacing}. The command is only meaningful in phases where 
\t{REPLACING_VERSIONS} is
+defined.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting version manipulation commands}
 \label{tab:version-commands}
-\begin{tabular}{}
+\begin{tabular}{l}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{c}{\textbf{\t{ver_cut}?}} &
   \multicolumn{1}{c}{\textbf{\t{ver_rs}?}} &
-  \multicolumn{1}{c}{\textbf{\t{ver_test}?}} \\
+  \multicolumn{1}{c}{\textbf{\t{ver_test}?}} &
+  \multicolumn{1}{c}{\textbf{\t{ver_replacing}?}} \\
   \midrule
-  0, 1, 2, 3, 4, 5, 6 & No  & No  & No  \\
-  7, 8, 9 & Yes & Yes & Yes \\
+  0, 1, 2, 3, 4, 5, 6 & No  & No  & No  & No  \\
+  7, 8& Yes & Yes & Yes & No  \\
+  9   & Yes & Yes & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-01-18 Thread Ulrich Müller
commit: 401b761224ed47d1930b0776af6fe05abe385239
Author: Ulrich Müller  gentoo  org>
AuthorDate: Thu Jun 20 18:16:12 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Fri Jan 17 18:40:42 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=401b7612

EAPI 9 no longer rewrites absolute symlinks

Bug: https://bugs.gentoo.org/934514
Signed-off-by: Ulrich Müller  gentoo.org>

 eapi-differences.tex |  4 
 merge.tex| 19 +--
 2 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 7b978ea..96ca568 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -180,6 +180,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}
@@ -369,6 +372,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item Variables no longer exported, \featureref{export-vars}.
 \item \t{assert} banned, \featureref{banned-commands}.
 \item \t{pipestatus}, \featureref{pipestatus}.
+\item Absolute symlinks no longer 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}
 



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-01-18 Thread Ulrich Müller
commit: f51660247b5209b70fcd00dc3802568baeb7b56e
Author: Ulrich Müller  gentoo  org>
AuthorDate: Fri Nov 29 16:02:56 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Fri Jan 17 18:40:41 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=f5166024

EAPI 9 bans assert

Bug: https://bugs.gentoo.org/566342
Signed-off-by: Ulrich Müller  gentoo.org>

 eapi-differences.tex |  4 
 pkg-mgr-commands.tex | 10 +++---
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 75c53a0..dadda01 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -120,6 +120,9 @@ GNU \t{patch} version & \compactfeatureref{gnu-patch} &
 \t{hasq} & \compactfeatureref{banned-commands} &
 Yes & Yes & Banned & Banned \\
 
+\t{assert} & \compactfeatureref{banned-commands} &
+Yes & Yes & Yes & Banned \\
+
 Query command options & \compactfeatureref{pm-query-options} &
 \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} & \t{-b}, \t{-d}, \t{-r} & 
\t{-b}, \t{-d}, \t{-r} \\
 
@@ -361,6 +364,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item Bash version is 5.2, \featureref{bash-version}.
 \item Different default EAPI for profiles, \featureref{profile-eapi-default}.
 \item Variables no longer exported, \featureref{export-vars}.
+\item \t{assert} banned, \featureref{banned-commands}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 878d1eb..3dfc3e1 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -80,10 +80,12 @@ called, the package manager must abort the build process 
indicating an error.
   \multicolumn{1}{c}{} &
   \multicolumn{1}{c}{\textbf{\t{useq}}} &
   \multicolumn{1}{c}{\textbf{\t{hasv}}} &
-  \multicolumn{1}{c}{\textbf{\t{hasq}}} & & & \\
+  \multicolumn{1}{c}{\textbf{\t{hasq}}} &
+  \multicolumn{1}{c}{\textbf{\t{assert}}} & & \\
   \midrule
-  0, 1, 2, 3, 4, 5, 6, 7  & No  & No  & No  & & & \\
-  8, 9& Yes & Yes & Yes & & & \\
+  0, 1, 2, 3, 4, 5, 6, 7  & No  & No  & No  & No  & & \\
+  8   & Yes & Yes & Yes & No  & & \\
+  9   & Yes & Yes & Yes & Yes & & \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -201,6 +203,8 @@ completing. Ebuilds must not run any of these commands once 
the current phase fu
 environment.
 \item[assert] Checks the shell's pipe status array, and if any element is 
non-zero (indicating
 failure), calls \t{die}, passing any parameters to it.
+In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as per
+section~\ref{sec:banned-commands}.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{9}



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-01-18 Thread Ulrich Müller
commit: 5f8cb251f4955880cafc0b0d844bf913a395a4e6
Author: Ulrich Müller  gentoo  org>
AuthorDate: Tue Aug  3 16:32:47 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Fri Jan 17 18:40:38 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=5f8cb251

Add an EAPI 9 identical to EAPI 8

Signed-off-by: Ulrich Müller  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 c1f7d6a..a826355 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 

[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-01-18 Thread Ulrich Müller
commit: 8596541988b19918c9279c99217dc876a8f73d02
Author: Ulrich Müller  gentoo  org>
AuthorDate: Fri Nov 29 16:06:26 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Fri Jan 17 18:40:42 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=85965419

EAPI 9 has pipestatus

Bug: https://bugs.gentoo.org/566342
Signed-off-by: Ulrich Müller  gentoo.org>

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index dadda01..7b978ea 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -135,6 +135,9 @@ Output commands use stdout & 
\compactfeatureref{output-no-stdout} &
 \t{die} in subshell & \compactfeatureref{subshell-die} &
 No & Yes & Yes & Yes \\
 
+\t{pipestatus} & \compactfeatureref{pipestatus} &
+No & No & No & Yes \\
+
 \t{econf -{}-datarootdir} & \compactfeatureref{econf-options} &
 No & No & Yes & Yes \\
 
@@ -365,6 +368,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item Different default EAPI for profiles, \featureref{profile-eapi-default}.
 \item Variables no longer exported, \featureref{export-vars}.
 \item \t{assert} banned, \featureref{banned-commands}.
+\item \t{pipestatus}, \featureref{pipestatus}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 3dfc3e1..3c03f0b 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -205,6 +205,11 @@ completing. Ebuilds must not run any of these commands 
once the current phase fu
 failure), calls \t{die}, passing any parameters to it.
 In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as per
 section~\ref{sec:banned-commands}.
+\item[pipestatus] \featurelabel{pipestatus} Checks the shell's pipe status 
array, i.\,e.\ the exit
+status of the command(s) in the most recently executed foreground 
pipeline. Returns shell true
+(0) if all elements are zero, or the last non-zero element otherwise. If 
called with \t{-v}
+as the first argument, also outputs the pipe status array as a 
space-separated list.
+Only available in EAPIs listed in table~\ref{tab:pipestatus} as supporting 
\t{pipestatus}.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{9}
@@ -223,6 +228,20 @@ completing. Ebuilds must not run any of these commands 
once the current phase fu
 \end{tabular}
 \end{centertable}
 
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{EAPIs supporting \t{pipestatus}}
+\label{tab:pipestatus}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Supports \t{pipestatus}?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7, 8 & No  \\
+  9 & Yes \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \subsection{Patch commands}
 These commands are used during the \t{src_prepare} phase to apply patches to 
the package's sources.
 Ebuilds must not run any of these commands once the current phase function has 
returned.



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-01-18 Thread Ulrich Müller
commit: acea2cfd7dafb779efab56de0bbf09343c512c91
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sat Jan 11 09:47:19 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Fri Jan 17 18:40:39 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=acea2cfd

EAPI 9: Bash version is 5.2

Bug: https://bugs.gentoo.org/946193
Signed-off-by: Ulrich Müller  gentoo.org>

 eapi-differences.tex | 4 ++--
 ebuild-format.tex| 3 ++-
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 9617dc4..4b0a0ff 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -39,7 +39,7 @@ Profile files as directories & 
\compactfeatureref{profile-file-dirs} &
 Optional & No & No & No \\
 
 Bash version & \compactfeatureref{bash-version} &
-4.2 & 4.2 & 5.0 & 5.0 \\
+4.2 & 4.2 & 5.0 & 5.2 \\
 
 Selective URI restrictions & \compactfeatureref{uri-restrict} &
 No & No & Yes & Yes \\
@@ -352,7 +352,7 @@ EAPI 8 is EAPI 7 with the following changes:
 EAPI 9 is EAPI 8 with the following changes:
 
 \begin{compactitem}
-\item None
+\item Bash version is 5.2, \featureref{bash-version}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/ebuild-format.tex b/ebuild-format.tex
index 844f01a..a543013 100644
--- a/ebuild-format.tex
+++ b/ebuild-format.tex
@@ -32,7 +32,8 @@ 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, 9  & 5.0 & Yes \\
+  8 & 5.0 & Yes \\
+  9 & 5.2 & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-01-18 Thread Ulrich Müller
commit: 8fe34da2ffaebeebd9ae679b92e352e66ba01553
Author: Ulrich Müller  gentoo  org>
AuthorDate: Mon Feb 21 18:32:43 2022 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Fri Jan 17 18:40:39 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=8fe34da2

EAPI 9 profile EAPI defaults to top-level

Bug: https://bugs.gentoo.org/806181
Signed-off-by: Ulrich Müller  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 4b0a0ff..0564ab4 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 \\
 
@@ -353,6 +356,7 @@ EAPI 9 is EAPI 8 with the following changes:
 
 \begin{compactitem}
 \item Bash version is 5.2, \featureref{bash-version}.
+\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



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-01-18 Thread Ulrich Müller
commit: 11ec011abe0ef7b2dbc9f0fe77a03abcc6e4664a
Author: Ulrich Müller  gentoo  org>
AuthorDate: Mon Jan 13 21:14:36 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Fri Jan 17 18:40:41 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=11ec011a

EAPI 9: Special profile variables are no longer exported

Bug: https://bugs.gentoo.org/948001
Signed-off-by: Ulrich Müller  gentoo.org>

 ebuild-env-vars.tex   | 10 --
 profile-variables.tex |  2 ++
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 4f19d70..1e2623b 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -354,8 +354,14 @@ commands (see section~\ref{sec:pkg-mgr-commands}) in an 
implementation-defined m
 \end{tabular}
 \end{centertable}
 
-Except where otherwise noted, all variables set in the active profiles' 
\t{make.defaults} files must
-be exported to the ebuild environment. \t{CHOST}, \t{CBUILD} and \t{CTARGET}, 
if not set by
+Variables listed in section~\ref{sec:specific-profile-vars} as having specific 
meanings or special
+handling, and that are set in the active profiles' \t{make.defaults} files, 
are either exported
+to the environment or kept as unexported shell variables, as specified for 
EAPIs in
+table~\ref{tab:export-vars}. To clarify, this behaviour is governed by the 
EAPI of the ebuild,
+not that of the profile.
+
+Except where otherwise noted, all other variables set in the active profiles' 
\t{make.defaults}
+files must be exported to the environment. \t{CHOST}, \t{CBUILD} and 
\t{CTARGET}, if not set by
 profiles, must contain either an appropriate machine tuple (the definition of 
appropriate is beyond
 the scope of this specification) or be unset.
 

diff --git a/profile-variables.tex b/profile-variables.tex
index f20fde4..ddcbd3a 100644
--- a/profile-variables.tex
+++ b/profile-variables.tex
@@ -69,6 +69,8 @@ completely override those in parent profiles.
 \end{centertable}
 
 \subsection{Specific variables and their meanings}
+\label{sec:specific-profile-vars}
+
 The following variables have specific meanings when set in profiles.
 \begin{description}
 \item[ARCH] The system's architecture. Must be a value listed in 
\t{profiles/arch.list}; see



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-01-18 Thread Ulrich Müller
commit: 826681e69791946e9dd7c8e3b669c6c89db5fb45
Author: Ulrich Müller  gentoo  org>
AuthorDate: Tue Jan  7 17:09:52 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Fri Jan 17 18:40:40 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=826681e6

Clarify use of the terms "export" and "environment variable"

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

 ebuild-env-vars.tex  | 12 ++--
 ebuild-functions.tex | 22 +++---
 ebuild-vars.tex  |  4 ++--
 3 files changed, 19 insertions(+), 19 deletions(-)

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 861dd48..268fa36 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -211,14 +211,14 @@ inconsistent variable.
 No &
 \featurelabel{desttree} Controls the location where \t{dobin}, \t{dolib}, 
\t{domo},
 and \t{dosbin} install things. Only for EAPIs listed in 
table~\ref{tab:removed-env-vars-table}
-as supporting \t{DESTTREE}\@. In all other EAPIs, this is retained as a 
conceptual variable not
-exported to the ebuild environment. \\
+as supporting \t{DESTTREE}\@. In all other EAPIs, this is retained as a 
conceptual variable
+inaccessible from the ebuild environment. \\
 \t{INSDESTTREE} &
 \t{src_install} &
 No &
 \featurelabel{insdesttree} Controls the location where \t{doins} installs 
things. Only for EAPIs
 listed in table~\ref{tab:removed-env-vars-table} as supporting 
\t{INSDESTTREE}\@. In all other
-EAPIs, this is retained as a conceptual variable not exported to the 
ebuild environment. \\
+EAPIs, this is retained as a conceptual variable inaccessible from the 
ebuild environment. \\
 \t{USE} &
 All &
 Yes &
@@ -373,11 +373,11 @@ This section discusses the handling of four variables:
 \begin{description}
 \item[IUSE] is the variable calculated from the \t{IUSE} values defined in 
ebuilds and eclasses.
 \item[IUSE_REFERENCEABLE] is a variable calculated from \t{IUSE} and a variety 
of other sources
-described below. It is purely a conceptual variable; it is not exported to 
the ebuild
+described below. It is purely a conceptual variable; it is inaccessible 
from the ebuild
 environment. Values in \t{IUSE_REFERENCEABLE} may legally be used in 
queries from other
 packages about an ebuild's state (for example, for use dependencies).
-\item[IUSE_EFFECTIVE] is another conceptual, unexported variable. Values in 
\t{IUSE_EFFECTIVE} are
-those which an ebuild may legally use in queries about itself (for 
example, for the \t{use}
+\item[IUSE_EFFECTIVE] is another conceptual, inaccessible variable. Values in 
\t{IUSE_EFFECTIVE}
+are those which an ebuild may legally use in queries about itself (for 
example, for the \t{use}
 function, and for use in dependency specification conditional blocks).
 \item[USE] is a variable calculated by the package manager and exported to the 
ebuild environment.
 \end{description}

diff --git a/ebuild-functions.tex b/ebuild-functions.tex
index 046a0a7..bf6b774 100644
--- a/ebuild-functions.tex
+++ b/ebuild-functions.tex
@@ -8,10 +8,10 @@ by the package manager as part of the build and/or install 
process. In all cases
 must provide a default implementation of these functions; unless otherwise 
stated this must be a
 no-op. All functions may assume that they have read access to all system 
libraries, binaries and
 configuration files that are accessible to normal users, as well as write 
access to the temporary
-directories specified by the \t{T}, \t{TMPDIR} and \t{HOME} environment 
variables
+directories specified by the \t{T}, \t{TMPDIR} and \t{HOME} variables
 (see section~\ref{sec:ebuild-env-vars}). Most functions must assume only that 
they have additional
-write access to the package's working directory (the \t{WORKDIR} environment 
variable); exceptions
-are noted below.
+write access to the package's working directory (the \t{WORKDIR} variable); 
exceptions are noted
+below.
 
 The environment for functions run outside of the build sequence (that is, 
\t{pkg_config},
 \t{pkg_info}, \t{pkg_prerm} and \t{pkg_postrm}) must be the environment used 
for the build of the
@@ -400,37 +400,37 @@ src_install() {
 
 The \t{pkg_preinst} function performs any special tasks that are required 
immediately before
 merging the package to the live filesystem. It must not write outside of the 
directories specified
-by the \t{ROOT} and \t{D} environment variables.
+by the \t{ROOT} and \t{D} variables.
 
 \t{pkg_preinst} must be run with full access to all files and directories 
below that specified by
-the \t{ROOT} and \t{D} environment variables.
+the \t{ROOT} and \t{D} variables.
 
 \subsection{pkg_postinst}
 
 The \t{pkg_postinst} function performs any special tasks that are required 
immediately after
 merging the package to the live filesystem. It must not write outside of the 
directory specified
-in the \t{ROOT} environment variable.
+in the \t{ROOT} variable.
 
 

[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-01-18 Thread Ulrich Müller
commit: c930e83595b6e9dc05341418e92efaf8b82a5020
Author: Ulrich Müller  gentoo  org>
AuthorDate: Tue Jan  7 17:13:28 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Fri Jan 17 18:40:40 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=c930e835

EAPI 9: Defined variables are no longer exported

Bug: https://bugs.gentoo.org/721088
Signed-off-by: Ulrich Müller  gentoo.org>

 eapi-differences.tex |  4 
 ebuild-env-vars.tex  | 36 +---
 ebuild-vars.tex  |  4 
 3 files changed, 37 insertions(+), 7 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 0564ab4..75c53a0 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -69,6 +69,9 @@ Accumulate \t{PROPERTIES} & 
\compactfeatureref{accumulate-vars} &
 Accumulate \t{RESTRICT} & \compactfeatureref{accumulate-vars} &
 No & No & Yes & Yes \\
 
+Export variables & \compactfeatureref{export-vars} &
+Yes & Yes & Yes & No \\
+
 \t{PORTDIR} & \compactfeatureref{portdir} &
 Yes & No & No & No \\
 
@@ -357,6 +360,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \begin{compactitem}
 \item Bash version is 5.2, \featureref{bash-version}.
 \item Different default EAPI for profiles, \featureref{profile-eapi-default}.
+\item Variables no longer exported, \featureref{export-vars}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 268fa36..4f19d70 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -1,10 +1,10 @@
 \section{Defined variables}
 \label{sec:ebuild-env-vars}
 
-The package manager must define the following environment variables. Not all 
variables are
-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.
+The package manager must define the following variables. Not all variables are 
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}).
@@ -12,6 +12,26 @@ For example, \t{EBUILD_PHASE} is different for every phase, 
and \t{ROOT} may hav
 the various different \t{pkg_*} phases. Ebuilds must recalculate any variable 
they derive from an
 inconsistent variable.
 
+\featurelabel{export-vars} These variables are either exported to the 
environment or kept as
+unexported shell variables, as specified for EAPIs in 
table~\ref{tab:export-vars}; exceptions are
+\t{TMPDIR} and \t{HOME} which are always exported to the environment. In EAPIs 
where variables are
+not exported, the package manager must pass those that are required by 
ebuild-specific external
+commands (see section~\ref{sec:pkg-mgr-commands}) in an implementation-defined 
manner.
+
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{EAPIs with variables exported to the environment}
+\label{tab:export-vars}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Variables exported?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7, 8 & Yes \\
+  9 & No  \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \begin{landscape}
 % Reduce width of text area to make room for margin notes
 \addtolength{\hsize}{-25mm}
@@ -168,13 +188,15 @@ inconsistent variable.
 \t{TMPDIR} &
 All &
 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. \\
+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{TMPDIR} is always
+exported to the environment. \\
 \t{HOME} &
 All &
 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. \\
+ebuild that may read or modify the home directory. \t{HOME} is always 
exported to the
+environment. \\
 \t{EPREFIX} &
 All &
 Yes &

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index b030943..9979ce9 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -335,6 +335,10 @@ defined based upon any variant condition.}
 \end{tabular}
 \end{centertable}
 
+For EAPIs listed in table~\ref{tab:export-vars} with the property that 
variables are not exported,
+the package manager must not export any of the variables specified in this 
sectio

[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-01-13 Thread Ulrich Müller
commit: eea42d4a949e0ea378c79fc27334604438e9d21a
Author: Ulrich Müller  gentoo  org>
AuthorDate: Tue Jan  7 17:09:52 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Jan 13 17:21:44 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=eea42d4a

Clarify use of the terms "export" and "environment variable"

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

 ebuild-env-vars.tex  | 12 ++--
 ebuild-functions.tex | 22 +++---
 ebuild-vars.tex  |  4 ++--
 3 files changed, 19 insertions(+), 19 deletions(-)

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 861dd48..268fa36 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -211,14 +211,14 @@ inconsistent variable.
 No &
 \featurelabel{desttree} Controls the location where \t{dobin}, \t{dolib}, 
\t{domo},
 and \t{dosbin} install things. Only for EAPIs listed in 
table~\ref{tab:removed-env-vars-table}
-as supporting \t{DESTTREE}\@. In all other EAPIs, this is retained as a 
conceptual variable not
-exported to the ebuild environment. \\
+as supporting \t{DESTTREE}\@. In all other EAPIs, this is retained as a 
conceptual variable
+inaccessible from the ebuild environment. \\
 \t{INSDESTTREE} &
 \t{src_install} &
 No &
 \featurelabel{insdesttree} Controls the location where \t{doins} installs 
things. Only for EAPIs
 listed in table~\ref{tab:removed-env-vars-table} as supporting 
\t{INSDESTTREE}\@. In all other
-EAPIs, this is retained as a conceptual variable not exported to the 
ebuild environment. \\
+EAPIs, this is retained as a conceptual variable inaccessible from the 
ebuild environment. \\
 \t{USE} &
 All &
 Yes &
@@ -373,11 +373,11 @@ This section discusses the handling of four variables:
 \begin{description}
 \item[IUSE] is the variable calculated from the \t{IUSE} values defined in 
ebuilds and eclasses.
 \item[IUSE_REFERENCEABLE] is a variable calculated from \t{IUSE} and a variety 
of other sources
-described below. It is purely a conceptual variable; it is not exported to 
the ebuild
+described below. It is purely a conceptual variable; it is inaccessible 
from the ebuild
 environment. Values in \t{IUSE_REFERENCEABLE} may legally be used in 
queries from other
 packages about an ebuild's state (for example, for use dependencies).
-\item[IUSE_EFFECTIVE] is another conceptual, unexported variable. Values in 
\t{IUSE_EFFECTIVE} are
-those which an ebuild may legally use in queries about itself (for 
example, for the \t{use}
+\item[IUSE_EFFECTIVE] is another conceptual, inaccessible variable. Values in 
\t{IUSE_EFFECTIVE}
+are those which an ebuild may legally use in queries about itself (for 
example, for the \t{use}
 function, and for use in dependency specification conditional blocks).
 \item[USE] is a variable calculated by the package manager and exported to the 
ebuild environment.
 \end{description}

diff --git a/ebuild-functions.tex b/ebuild-functions.tex
index 046a0a7..bf6b774 100644
--- a/ebuild-functions.tex
+++ b/ebuild-functions.tex
@@ -8,10 +8,10 @@ by the package manager as part of the build and/or install 
process. In all cases
 must provide a default implementation of these functions; unless otherwise 
stated this must be a
 no-op. All functions may assume that they have read access to all system 
libraries, binaries and
 configuration files that are accessible to normal users, as well as write 
access to the temporary
-directories specified by the \t{T}, \t{TMPDIR} and \t{HOME} environment 
variables
+directories specified by the \t{T}, \t{TMPDIR} and \t{HOME} variables
 (see section~\ref{sec:ebuild-env-vars}). Most functions must assume only that 
they have additional
-write access to the package's working directory (the \t{WORKDIR} environment 
variable); exceptions
-are noted below.
+write access to the package's working directory (the \t{WORKDIR} variable); 
exceptions are noted
+below.
 
 The environment for functions run outside of the build sequence (that is, 
\t{pkg_config},
 \t{pkg_info}, \t{pkg_prerm} and \t{pkg_postrm}) must be the environment used 
for the build of the
@@ -400,37 +400,37 @@ src_install() {
 
 The \t{pkg_preinst} function performs any special tasks that are required 
immediately before
 merging the package to the live filesystem. It must not write outside of the 
directories specified
-by the \t{ROOT} and \t{D} environment variables.
+by the \t{ROOT} and \t{D} variables.
 
 \t{pkg_preinst} must be run with full access to all files and directories 
below that specified by
-the \t{ROOT} and \t{D} environment variables.
+the \t{ROOT} and \t{D} variables.
 
 \subsection{pkg_postinst}
 
 The \t{pkg_postinst} function performs any special tasks that are required 
immediately after
 merging the package to the live filesystem. It must not write outside of the 
directory specified
-in the \t{ROOT} environment variable.
+in the \t{ROOT} variable.
 
 

[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-01-13 Thread Ulrich Müller
commit: 57a22fdc8e3acb701e5a4aa4a95d6f04c5de1c5a
Author: Ulrich Müller  gentoo  org>
AuthorDate: Thu Jun 20 18:16:12 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Jan 13 17:21:46 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=57a22fdc

EAPI 9 no longer rewrites absolute symlinks

Bug: https://bugs.gentoo.org/934514
Signed-off-by: Ulrich Müller  gentoo.org>

 eapi-differences.tex |  4 
 merge.tex| 19 +--
 2 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index b0fac03..a9e8285 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -180,6 +180,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}
@@ -369,6 +372,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item Defined variables no longer exported, \featureref{export-vars}.
 \item \t{assert} banned, \featureref{banned-commands}.
 \item \t{pipestatus}, \featureref{pipestatus}.
+\item Absolute symlinks no longer 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}
 



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-01-13 Thread Ulrich Müller
commit: 6766b4068f60f97f0d2e937bc8dc0574e9d4d19f
Author: Ulrich Müller  gentoo  org>
AuthorDate: Fri Nov 29 16:02:56 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Jan 13 17:21:45 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=6766b406

EAPI 9 bans assert

Bug: https://bugs.gentoo.org/566342
Signed-off-by: Ulrich Müller  gentoo.org>

 eapi-differences.tex |  4 
 pkg-mgr-commands.tex | 10 +++---
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index df04ff9..4624259 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -120,6 +120,9 @@ GNU \t{patch} version & \compactfeatureref{gnu-patch} &
 \t{hasq} & \compactfeatureref{banned-commands} &
 Yes & Yes & Banned & Banned \\
 
+\t{assert} & \compactfeatureref{banned-commands} &
+Yes & Yes & Yes & Banned \\
+
 Query command options & \compactfeatureref{pm-query-options} &
 \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} & \t{-b}, \t{-d}, \t{-r} & 
\t{-b}, \t{-d}, \t{-r} \\
 
@@ -361,6 +364,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item Bash version is 5.2, \featureref{bash-version}.
 \item Different default EAPI for profiles, \featureref{profile-eapi-default}.
 \item Defined variables no longer exported, \featureref{export-vars}.
+\item \t{assert} banned, \featureref{banned-commands}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 878d1eb..3dfc3e1 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -80,10 +80,12 @@ called, the package manager must abort the build process 
indicating an error.
   \multicolumn{1}{c}{} &
   \multicolumn{1}{c}{\textbf{\t{useq}}} &
   \multicolumn{1}{c}{\textbf{\t{hasv}}} &
-  \multicolumn{1}{c}{\textbf{\t{hasq}}} & & & \\
+  \multicolumn{1}{c}{\textbf{\t{hasq}}} &
+  \multicolumn{1}{c}{\textbf{\t{assert}}} & & \\
   \midrule
-  0, 1, 2, 3, 4, 5, 6, 7  & No  & No  & No  & & & \\
-  8, 9& Yes & Yes & Yes & & & \\
+  0, 1, 2, 3, 4, 5, 6, 7  & No  & No  & No  & No  & & \\
+  8   & Yes & Yes & Yes & No  & & \\
+  9   & Yes & Yes & Yes & Yes & & \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -201,6 +203,8 @@ completing. Ebuilds must not run any of these commands once 
the current phase fu
 environment.
 \item[assert] Checks the shell's pipe status array, and if any element is 
non-zero (indicating
 failure), calls \t{die}, passing any parameters to it.
+In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as per
+section~\ref{sec:banned-commands}.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{9}



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-01-13 Thread Ulrich Müller
commit: d6ab2a1bb6972b81669c45ce1d6b6536c16cada4
Author: Ulrich Müller  gentoo  org>
AuthorDate: Mon Feb 21 18:32:43 2022 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Jan 13 17:21:43 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=d6ab2a1b

EAPI 9 profile EAPI defaults to top-level

Bug: https://bugs.gentoo.org/806181
Signed-off-by: Ulrich Müller  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 4b0a0ff..0564ab4 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 \\
 
@@ -353,6 +356,7 @@ EAPI 9 is EAPI 8 with the following changes:
 
 \begin{compactitem}
 \item Bash version is 5.2, \featureref{bash-version}.
+\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



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-01-13 Thread Ulrich Müller
commit: 9019f2f6434aa7ed21f653324e0613d20b957926
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sat Jan 11 09:47:19 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Jan 13 17:21:43 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=9019f2f6

EAPI 9: Bash version is 5.2

Bug: https://bugs.gentoo.org/946193
Signed-off-by: Ulrich Müller  gentoo.org>

 eapi-differences.tex | 4 ++--
 ebuild-format.tex| 3 ++-
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 9617dc4..4b0a0ff 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -39,7 +39,7 @@ Profile files as directories & 
\compactfeatureref{profile-file-dirs} &
 Optional & No & No & No \\
 
 Bash version & \compactfeatureref{bash-version} &
-4.2 & 4.2 & 5.0 & 5.0 \\
+4.2 & 4.2 & 5.0 & 5.2 \\
 
 Selective URI restrictions & \compactfeatureref{uri-restrict} &
 No & No & Yes & Yes \\
@@ -352,7 +352,7 @@ EAPI 8 is EAPI 7 with the following changes:
 EAPI 9 is EAPI 8 with the following changes:
 
 \begin{compactitem}
-\item None
+\item Bash version is 5.2, \featureref{bash-version}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/ebuild-format.tex b/ebuild-format.tex
index 844f01a..a543013 100644
--- a/ebuild-format.tex
+++ b/ebuild-format.tex
@@ -32,7 +32,8 @@ 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, 9  & 5.0 & Yes \\
+  8 & 5.0 & Yes \\
+  9 & 5.2 & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-01-13 Thread Ulrich Müller
commit: 95ee9439b7b04f802ffdd39255d0a854ac50f0f0
Author: Ulrich Müller  gentoo  org>
AuthorDate: Tue Jan  7 17:13:28 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Jan 13 17:21:44 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=95ee9439

EAPI 9: Defined variables are no longer exported

Bug: https://bugs.gentoo.org/721088
Signed-off-by: Ulrich Müller  gentoo.org>

 eapi-differences.tex |  4 
 ebuild-env-vars.tex  | 36 +---
 ebuild-vars.tex  |  4 
 3 files changed, 37 insertions(+), 7 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 0564ab4..df04ff9 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -69,6 +69,9 @@ Accumulate \t{PROPERTIES} & 
\compactfeatureref{accumulate-vars} &
 Accumulate \t{RESTRICT} & \compactfeatureref{accumulate-vars} &
 No & No & Yes & Yes \\
 
+Export variables & \compactfeatureref{export-vars} &
+Yes & Yes & Yes & No \\
+
 \t{PORTDIR} & \compactfeatureref{portdir} &
 Yes & No & No & No \\
 
@@ -357,6 +360,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \begin{compactitem}
 \item Bash version is 5.2, \featureref{bash-version}.
 \item Different default EAPI for profiles, \featureref{profile-eapi-default}.
+\item Defined variables no longer exported, \featureref{export-vars}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 268fa36..4f19d70 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -1,10 +1,10 @@
 \section{Defined variables}
 \label{sec:ebuild-env-vars}
 
-The package manager must define the following environment variables. Not all 
variables are
-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.
+The package manager must define the following variables. Not all variables are 
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}).
@@ -12,6 +12,26 @@ For example, \t{EBUILD_PHASE} is different for every phase, 
and \t{ROOT} may hav
 the various different \t{pkg_*} phases. Ebuilds must recalculate any variable 
they derive from an
 inconsistent variable.
 
+\featurelabel{export-vars} These variables are either exported to the 
environment or kept as
+unexported shell variables, as specified for EAPIs in 
table~\ref{tab:export-vars}; exceptions are
+\t{TMPDIR} and \t{HOME} which are always exported to the environment. In EAPIs 
where variables are
+not exported, the package manager must pass those that are required by 
ebuild-specific external
+commands (see section~\ref{sec:pkg-mgr-commands}) in an implementation-defined 
manner.
+
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{EAPIs with variables exported to the environment}
+\label{tab:export-vars}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Variables exported?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7, 8 & Yes \\
+  9 & No  \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \begin{landscape}
 % Reduce width of text area to make room for margin notes
 \addtolength{\hsize}{-25mm}
@@ -168,13 +188,15 @@ inconsistent variable.
 \t{TMPDIR} &
 All &
 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. \\
+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{TMPDIR} is always
+exported to the environment. \\
 \t{HOME} &
 All &
 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. \\
+ebuild that may read or modify the home directory. \t{HOME} is always 
exported to the
+environment. \\
 \t{EPREFIX} &
 All &
 Yes &

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index b030943..9979ce9 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -335,6 +335,10 @@ defined based upon any variant condition.}
 \end{tabular}
 \end{centertable}
 
+For EAPIs listed in table~\ref{tab:export-vars} with the property that 
variables are not exported,
+the package manager must not export any of the variables specified in this

[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-01-13 Thread Ulrich Müller
commit: bffede0edfd863a932c9f15bb0fe14fe3e63c9fa
Author: Ulrich Müller  gentoo  org>
AuthorDate: Tue Aug  3 16:32:47 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Jan 13 17:21:42 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=bffede0e

Add an EAPI 9 identical to EAPI 8

Signed-off-by: Ulrich Müller  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 c1f7d6a..a826355 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 

[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-01-13 Thread Ulrich Müller
commit: 6da1edc1478571c766387385280db8fc7baf3053
Author: Ulrich Müller  gentoo  org>
AuthorDate: Fri Nov 29 16:06:26 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Jan 13 17:21:45 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=6da1edc1

EAPI 9 has pipestatus

Bug: https://bugs.gentoo.org/566342
Signed-off-by: Ulrich Müller  gentoo.org>

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 4624259..b0fac03 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -135,6 +135,9 @@ Output commands use stdout & 
\compactfeatureref{output-no-stdout} &
 \t{die} in subshell & \compactfeatureref{subshell-die} &
 No & Yes & Yes & Yes \\
 
+\t{pipestatus} & \compactfeatureref{pipestatus} &
+No & No & No & Yes \\
+
 \t{econf -{}-datarootdir} & \compactfeatureref{econf-options} &
 No & No & Yes & Yes \\
 
@@ -365,6 +368,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item Different default EAPI for profiles, \featureref{profile-eapi-default}.
 \item Defined variables no longer exported, \featureref{export-vars}.
 \item \t{assert} banned, \featureref{banned-commands}.
+\item \t{pipestatus}, \featureref{pipestatus}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 3dfc3e1..3c03f0b 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -205,6 +205,11 @@ completing. Ebuilds must not run any of these commands 
once the current phase fu
 failure), calls \t{die}, passing any parameters to it.
 In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as per
 section~\ref{sec:banned-commands}.
+\item[pipestatus] \featurelabel{pipestatus} Checks the shell's pipe status 
array, i.\,e.\ the exit
+status of the command(s) in the most recently executed foreground 
pipeline. Returns shell true
+(0) if all elements are zero, or the last non-zero element otherwise. If 
called with \t{-v}
+as the first argument, also outputs the pipe status array as a 
space-separated list.
+Only available in EAPIs listed in table~\ref{tab:pipestatus} as supporting 
\t{pipestatus}.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{9}
@@ -223,6 +228,20 @@ completing. Ebuilds must not run any of these commands 
once the current phase fu
 \end{tabular}
 \end{centertable}
 
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{EAPIs supporting \t{pipestatus}}
+\label{tab:pipestatus}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Supports \t{pipestatus}?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7, 8 & No  \\
+  9 & Yes \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \subsection{Patch commands}
 These commands are used during the \t{src_prepare} phase to apply patches to 
the package's sources.
 Ebuilds must not run any of these commands once the current phase function has 
returned.



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-01-12 Thread Ulrich Müller
commit: 056d5a841967d32a1019c07f467cedbfab2ef591
Author: Ulrich Müller  gentoo  org>
AuthorDate: Fri Nov 29 16:06:26 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Jan 12 20:09:48 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=056d5a84

EAPI 9 has pipestatus

Bug: https://bugs.gentoo.org/566342
Signed-off-by: Ulrich Müller  gentoo.org>

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 4624259..b0fac03 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -135,6 +135,9 @@ Output commands use stdout & 
\compactfeatureref{output-no-stdout} &
 \t{die} in subshell & \compactfeatureref{subshell-die} &
 No & Yes & Yes & Yes \\
 
+\t{pipestatus} & \compactfeatureref{pipestatus} &
+No & No & No & Yes \\
+
 \t{econf -{}-datarootdir} & \compactfeatureref{econf-options} &
 No & No & Yes & Yes \\
 
@@ -365,6 +368,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item Different default EAPI for profiles, \featureref{profile-eapi-default}.
 \item Defined variables no longer exported, \featureref{export-vars}.
 \item \t{assert} banned, \featureref{banned-commands}.
+\item \t{pipestatus}, \featureref{pipestatus}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 3dfc3e1..3c03f0b 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -205,6 +205,11 @@ completing. Ebuilds must not run any of these commands 
once the current phase fu
 failure), calls \t{die}, passing any parameters to it.
 In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as per
 section~\ref{sec:banned-commands}.
+\item[pipestatus] \featurelabel{pipestatus} Checks the shell's pipe status 
array, i.\,e.\ the exit
+status of the command(s) in the most recently executed foreground 
pipeline. Returns shell true
+(0) if all elements are zero, or the last non-zero element otherwise. If 
called with \t{-v}
+as the first argument, also outputs the pipe status array as a 
space-separated list.
+Only available in EAPIs listed in table~\ref{tab:pipestatus} as supporting 
\t{pipestatus}.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{9}
@@ -223,6 +228,20 @@ completing. Ebuilds must not run any of these commands 
once the current phase fu
 \end{tabular}
 \end{centertable}
 
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{EAPIs supporting \t{pipestatus}}
+\label{tab:pipestatus}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Supports \t{pipestatus}?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7, 8 & No  \\
+  9 & Yes \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \subsection{Patch commands}
 These commands are used during the \t{src_prepare} phase to apply patches to 
the package's sources.
 Ebuilds must not run any of these commands once the current phase function has 
returned.



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-01-12 Thread Ulrich Müller
commit: b41c2378f40f13385afc080fcd10031f2eac3c8f
Author: Ulrich Müller  gentoo  org>
AuthorDate: Tue Jan  7 17:13:28 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Jan 12 20:09:31 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=b41c2378

EAPI 9: Defined variables are no longer exported

Bug: https://bugs.gentoo.org/721088
Signed-off-by: Ulrich Müller  gentoo.org>

 eapi-differences.tex |  4 
 ebuild-env-vars.tex  | 36 +---
 ebuild-vars.tex  |  4 
 3 files changed, 37 insertions(+), 7 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 0564ab4..df04ff9 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -69,6 +69,9 @@ Accumulate \t{PROPERTIES} & 
\compactfeatureref{accumulate-vars} &
 Accumulate \t{RESTRICT} & \compactfeatureref{accumulate-vars} &
 No & No & Yes & Yes \\
 
+Export variables & \compactfeatureref{export-vars} &
+Yes & Yes & Yes & No \\
+
 \t{PORTDIR} & \compactfeatureref{portdir} &
 Yes & No & No & No \\
 
@@ -357,6 +360,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \begin{compactitem}
 \item Bash version is 5.2, \featureref{bash-version}.
 \item Different default EAPI for profiles, \featureref{profile-eapi-default}.
+\item Defined variables no longer exported, \featureref{export-vars}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 871a0d2..14ef7bc 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -1,10 +1,10 @@
 \section{Defined variables}
 \label{sec:ebuild-env-vars}
 
-The package manager must define the following environment variables. Not all 
variables are
-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.
+The package manager must define the following variables. Not all variables are 
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}).
@@ -12,6 +12,26 @@ For example, \t{EBUILD_PHASE} is different for every phase, 
and \t{ROOT} may hav
 the various different \t{pkg_*} phases. Ebuilds must recalculate any variable 
they derive from an
 inconsistent variable.
 
+\featurelabel{export-vars} These variables are either exported to the 
environment or kept as
+unexported shell variables, as specified for EAPIs in 
table~\ref{tab:export-vars}; exceptions are
+\t{TMPDIR} and \t{HOME} which are always exported to the environment. In EAPIs 
where variables are
+not exported, the package manager must pass those that are required by 
ebuild-specific external
+commands (see section~\ref{sec:pkg-mgr-commands}) in an implementation-defined 
manner.
+
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{EAPIs with variables exported to the environment}
+\label{tab:export-vars}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Variables exported?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7, 8 & Yes \\
+  9 & No  \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \begin{landscape}
 % Reduce width of text area to make room for margin notes
 \addtolength{\hsize}{-25mm}
@@ -168,13 +188,15 @@ inconsistent variable.
 \t{TMPDIR} &
 All &
 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. \\
+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{TMPDIR} is always
+exported to the environment. \\
 \t{HOME} &
 All &
 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. \\
+ebuild that may read or modify the home directory. \t{HOME} is always 
exported to the
+environment. \\
 \t{EPREFIX} &
 All &
 Yes &

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index b030943..9979ce9 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -335,6 +335,10 @@ defined based upon any variant condition.}
 \end{tabular}
 \end{centertable}
 
+For EAPIs listed in table~\ref{tab:export-vars} with the property that 
variables are not exported,
+the package manager must not export any of the variables specified in this

[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-01-12 Thread Ulrich Müller
commit: 2a084304f28bc0e28ee9e4e64ea089096d490f3e
Author: Ulrich Müller  gentoo  org>
AuthorDate: Fri Nov 29 16:02:56 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Jan 12 20:09:46 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=2a084304

EAPI 9 bans assert

Bug: https://bugs.gentoo.org/566342
Signed-off-by: Ulrich Müller  gentoo.org>

 eapi-differences.tex |  4 
 pkg-mgr-commands.tex | 10 +++---
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index df04ff9..4624259 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -120,6 +120,9 @@ GNU \t{patch} version & \compactfeatureref{gnu-patch} &
 \t{hasq} & \compactfeatureref{banned-commands} &
 Yes & Yes & Banned & Banned \\
 
+\t{assert} & \compactfeatureref{banned-commands} &
+Yes & Yes & Yes & Banned \\
+
 Query command options & \compactfeatureref{pm-query-options} &
 \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} & \t{-b}, \t{-d}, \t{-r} & 
\t{-b}, \t{-d}, \t{-r} \\
 
@@ -361,6 +364,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item Bash version is 5.2, \featureref{bash-version}.
 \item Different default EAPI for profiles, \featureref{profile-eapi-default}.
 \item Defined variables no longer exported, \featureref{export-vars}.
+\item \t{assert} banned, \featureref{banned-commands}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 878d1eb..3dfc3e1 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -80,10 +80,12 @@ called, the package manager must abort the build process 
indicating an error.
   \multicolumn{1}{c}{} &
   \multicolumn{1}{c}{\textbf{\t{useq}}} &
   \multicolumn{1}{c}{\textbf{\t{hasv}}} &
-  \multicolumn{1}{c}{\textbf{\t{hasq}}} & & & \\
+  \multicolumn{1}{c}{\textbf{\t{hasq}}} &
+  \multicolumn{1}{c}{\textbf{\t{assert}}} & & \\
   \midrule
-  0, 1, 2, 3, 4, 5, 6, 7  & No  & No  & No  & & & \\
-  8, 9& Yes & Yes & Yes & & & \\
+  0, 1, 2, 3, 4, 5, 6, 7  & No  & No  & No  & No  & & \\
+  8   & Yes & Yes & Yes & No  & & \\
+  9   & Yes & Yes & Yes & Yes & & \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -201,6 +203,8 @@ completing. Ebuilds must not run any of these commands once 
the current phase fu
 environment.
 \item[assert] Checks the shell's pipe status array, and if any element is 
non-zero (indicating
 failure), calls \t{die}, passing any parameters to it.
+In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as per
+section~\ref{sec:banned-commands}.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{9}



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-01-12 Thread Ulrich Müller
commit: ba6cfc89e310482fa367e9360a6b0ec3d55798fc
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sat Jan 11 09:47:19 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Jan 12 20:08:46 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=ba6cfc89

EAPI 9: Bash version is 5.2

Bug: https://bugs.gentoo.org/946193
Signed-off-by: Ulrich Müller  gentoo.org>

 eapi-differences.tex | 4 ++--
 ebuild-format.tex| 3 ++-
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 9617dc4..4b0a0ff 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -39,7 +39,7 @@ Profile files as directories & 
\compactfeatureref{profile-file-dirs} &
 Optional & No & No & No \\
 
 Bash version & \compactfeatureref{bash-version} &
-4.2 & 4.2 & 5.0 & 5.0 \\
+4.2 & 4.2 & 5.0 & 5.2 \\
 
 Selective URI restrictions & \compactfeatureref{uri-restrict} &
 No & No & Yes & Yes \\
@@ -352,7 +352,7 @@ EAPI 8 is EAPI 7 with the following changes:
 EAPI 9 is EAPI 8 with the following changes:
 
 \begin{compactitem}
-\item None
+\item Bash version is 5.2, \featureref{bash-version}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/ebuild-format.tex b/ebuild-format.tex
index 844f01a..a543013 100644
--- a/ebuild-format.tex
+++ b/ebuild-format.tex
@@ -32,7 +32,8 @@ 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, 9  & 5.0 & Yes \\
+  8 & 5.0 & Yes \\
+  9 & 5.2 & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-01-12 Thread Ulrich Müller
commit: f077230159097f648d85c8cefd06e7853417e768
Author: Ulrich Müller  gentoo  org>
AuthorDate: Thu Jun 20 18:16:12 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Jan 12 20:09:49 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=f0772301

EAPI 9 no longer rewrites absolute symlinks

Bug: https://bugs.gentoo.org/934514
Signed-off-by: Ulrich Müller  gentoo.org>

 eapi-differences.tex |  4 
 merge.tex| 19 +--
 2 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index b0fac03..a9e8285 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -180,6 +180,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}
@@ -369,6 +372,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item Defined variables no longer exported, \featureref{export-vars}.
 \item \t{assert} banned, \featureref{banned-commands}.
 \item \t{pipestatus}, \featureref{pipestatus}.
+\item Absolute symlinks no longer 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}
 



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-01-12 Thread Ulrich Müller
commit: 5689a1da0ae6aee34d616372ce578f15c702070e
Author: Ulrich Müller  gentoo  org>
AuthorDate: Tue Jan  7 17:09:52 2025 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Jan 12 20:09:10 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=5689a1da

Clarify use of the terms "export" and "environment variable"

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

 ebuild-env-vars.tex  |  6 +++---
 ebuild-functions.tex | 22 +++---
 ebuild-vars.tex  |  4 ++--
 3 files changed, 16 insertions(+), 16 deletions(-)

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 0fcf457..871a0d2 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -211,14 +211,14 @@ inconsistent variable.
 No &
 \featurelabel{desttree} Controls the location where \t{dobin}, \t{dolib}, 
\t{domo},
 and \t{dosbin} install things. Only for EAPIs listed in 
table~\ref{tab:removed-env-vars-table}
-as supporting \t{DESTTREE}. In all other EAPIs, this is retained as a 
conceptual variable not
-exported to the ebuild environment. \\
+as supporting \t{DESTTREE}. In all other EAPIs, this is retained as a 
conceptual variable
+inaccessible from the ebuild environment. \\
 \t{INSDESTTREE} &
 \t{src_install} &
 No &
 \featurelabel{insdesttree} Controls the location where \t{doins} installs 
things. Only for EAPIs
 listed in table~\ref{tab:removed-env-vars-table} as supporting 
\t{INSDESTTREE}. In all other
-EAPIs, this is retained as a conceptual variable not exported to the 
ebuild environment. \\
+EAPIs, this is retained as a conceptual variable inaccessible from the 
ebuild environment. \\
 \t{USE} &
 All &
 Yes &

diff --git a/ebuild-functions.tex b/ebuild-functions.tex
index 046a0a7..bf6b774 100644
--- a/ebuild-functions.tex
+++ b/ebuild-functions.tex
@@ -8,10 +8,10 @@ by the package manager as part of the build and/or install 
process. In all cases
 must provide a default implementation of these functions; unless otherwise 
stated this must be a
 no-op. All functions may assume that they have read access to all system 
libraries, binaries and
 configuration files that are accessible to normal users, as well as write 
access to the temporary
-directories specified by the \t{T}, \t{TMPDIR} and \t{HOME} environment 
variables
+directories specified by the \t{T}, \t{TMPDIR} and \t{HOME} variables
 (see section~\ref{sec:ebuild-env-vars}). Most functions must assume only that 
they have additional
-write access to the package's working directory (the \t{WORKDIR} environment 
variable); exceptions
-are noted below.
+write access to the package's working directory (the \t{WORKDIR} variable); 
exceptions are noted
+below.
 
 The environment for functions run outside of the build sequence (that is, 
\t{pkg_config},
 \t{pkg_info}, \t{pkg_prerm} and \t{pkg_postrm}) must be the environment used 
for the build of the
@@ -400,37 +400,37 @@ src_install() {
 
 The \t{pkg_preinst} function performs any special tasks that are required 
immediately before
 merging the package to the live filesystem. It must not write outside of the 
directories specified
-by the \t{ROOT} and \t{D} environment variables.
+by the \t{ROOT} and \t{D} variables.
 
 \t{pkg_preinst} must be run with full access to all files and directories 
below that specified by
-the \t{ROOT} and \t{D} environment variables.
+the \t{ROOT} and \t{D} variables.
 
 \subsection{pkg_postinst}
 
 The \t{pkg_postinst} function performs any special tasks that are required 
immediately after
 merging the package to the live filesystem. It must not write outside of the 
directory specified
-in the \t{ROOT} environment variable.
+in the \t{ROOT} variable.
 
 \t{pkg_postinst}, like, \t{pkg_preinst}, must be run with full access to all 
files and directories
-below that specified by the \t{ROOT} environment variable.
+below that specified by the \t{ROOT} variable.
 
 \subsection{pkg_prerm}
 
 The \t{pkg_prerm} function performs any special tasks that are required 
immediately before
 unmerging the package from the live filesystem. It must not write outside of 
the directory specified
-by the \t{ROOT} environment variable.
+by the \t{ROOT} variable.
 
 \t{pkg_prerm} must be run with full access to all files and directories below 
that specified by
-the \t{ROOT} environment variable.
+the \t{ROOT} variable.
 
 \subsection{pkg_postrm}
 
 The \t{pkg_postrm} function performs any special tasks that are required 
immediately after
 unmerging the package from the live filesystem. It must not write outside of 
the directory specified
-by the \t{ROOT} environment variable.
+by the \t{ROOT} variable.
 
 \t{pkg_postrm} must be run with full access to all files and directories below 
that specified by
-the \t{ROOT} environment variable.
+the \t{ROOT} variable.
 
 \subsection{pkg_config}
 

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index 561eb0c..b030943 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.t

[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-01-12 Thread Ulrich Müller
commit: 627cd45184e23a2fa42f7c694a35c7dbb6daf70d
Author: Ulrich Müller  gentoo  org>
AuthorDate: Mon Feb 21 18:32:43 2022 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Jan 12 20:09:08 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=627cd451

EAPI 9 profile EAPI defaults to top-level

Bug: https://bugs.gentoo.org/806181
Signed-off-by: Ulrich Müller  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 4b0a0ff..0564ab4 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 \\
 
@@ -353,6 +356,7 @@ EAPI 9 is EAPI 8 with the following changes:
 
 \begin{compactitem}
 \item Bash version is 5.2, \featureref{bash-version}.
+\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



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-01-10 Thread Ulrich Müller
commit: cb58851f3e50fad7fd42e51bd2343f72f4938f49
Author: Ulrich Müller  gentoo  org>
AuthorDate: Thu Jun 20 18:16:12 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Thu Jan  9 17:40:00 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=cb58851f

EAPI 9 no longer rewrites absolute symlinks

Bug: https://bugs.gentoo.org/934514
Signed-off-by: Ulrich Müller  gentoo.org>

 eapi-differences.tex |  4 
 merge.tex| 19 +--
 2 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index fcaac92..c8f8a44 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -177,6 +177,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}
@@ -364,6 +367,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item Different default EAPI for profiles, \featureref{profile-eapi-default}.
 \item \t{assert} banned, \featureref{banned-commands}.
 \item \t{pipestatus}, \featureref{pipestatus}.
+\item Absolute symlinks no longer 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}
 



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-01-10 Thread Ulrich Müller
commit: 2952d564b17649ceebc190a3c8a20070666cf0a6
Author: Ulrich Müller  gentoo  org>
AuthorDate: Fri Nov 29 16:02:56 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Thu Jan  9 17:39:59 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=2952d564

EAPI 9 bans assert

Bug: https://bugs.gentoo.org/566342
Signed-off-by: Ulrich Müller  gentoo.org>

 eapi-differences.tex |  4 
 pkg-mgr-commands.tex | 10 +++---
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index f6aafe7..22029db 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -117,6 +117,9 @@ GNU \t{patch} version & \compactfeatureref{gnu-patch} &
 \t{hasq} & \compactfeatureref{banned-commands} &
 Yes & Yes & Banned & Banned \\
 
+\t{assert} & \compactfeatureref{banned-commands} &
+Yes & Yes & Yes & Banned \\
+
 Query command options & \compactfeatureref{pm-query-options} &
 \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} & \t{-b}, \t{-d}, \t{-r} & 
\t{-b}, \t{-d}, \t{-r} \\
 
@@ -356,6 +359,7 @@ EAPI 9 is EAPI 8 with the following changes:
 
 \begin{compactitem}
 \item Different default EAPI for profiles, \featureref{profile-eapi-default}.
+\item \t{assert} banned, \featureref{banned-commands}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 878d1eb..3dfc3e1 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -80,10 +80,12 @@ called, the package manager must abort the build process 
indicating an error.
   \multicolumn{1}{c}{} &
   \multicolumn{1}{c}{\textbf{\t{useq}}} &
   \multicolumn{1}{c}{\textbf{\t{hasv}}} &
-  \multicolumn{1}{c}{\textbf{\t{hasq}}} & & & \\
+  \multicolumn{1}{c}{\textbf{\t{hasq}}} &
+  \multicolumn{1}{c}{\textbf{\t{assert}}} & & \\
   \midrule
-  0, 1, 2, 3, 4, 5, 6, 7  & No  & No  & No  & & & \\
-  8, 9& Yes & Yes & Yes & & & \\
+  0, 1, 2, 3, 4, 5, 6, 7  & No  & No  & No  & No  & & \\
+  8   & Yes & Yes & Yes & No  & & \\
+  9   & Yes & Yes & Yes & Yes & & \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -201,6 +203,8 @@ completing. Ebuilds must not run any of these commands once 
the current phase fu
 environment.
 \item[assert] Checks the shell's pipe status array, and if any element is 
non-zero (indicating
 failure), calls \t{die}, passing any parameters to it.
+In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as per
+section~\ref{sec:banned-commands}.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{9}



[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-01-10 Thread Ulrich Müller
commit: 35c7266c696196b06977091acc67c9c630f3c390
Author: Ulrich Müller  gentoo  org>
AuthorDate: Tue Aug  3 16:32:47 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Thu Jan  9 17:39:58 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=35c7266c

Add an EAPI 9 identical to EAPI 8

Signed-off-by: Ulrich Müller  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 c1f7d6a..a826355 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 

[gentoo-commits] proj/pms:eapi-9 commit in: /

2025-01-10 Thread Ulrich Müller
commit: 5e5a33ea6b683c91be508eecd7a434062f09d703
Author: Ulrich Müller  gentoo  org>
AuthorDate: Fri Nov 29 16:06:26 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Thu Jan  9 17:40:00 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=5e5a33ea

EAPI 9 has pipestatus

Bug: https://bugs.gentoo.org/566342
Signed-off-by: Ulrich Müller  gentoo.org>

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 22029db..fcaac92 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -132,6 +132,9 @@ Output commands use stdout & 
\compactfeatureref{output-no-stdout} &
 \t{die} in subshell & \compactfeatureref{subshell-die} &
 No & Yes & Yes & Yes \\
 
+\t{pipestatus} & \compactfeatureref{pipestatus} &
+No & No & No & Yes \\
+
 \t{econf -{}-datarootdir} & \compactfeatureref{econf-options} &
 No & No & Yes & Yes \\
 
@@ -360,6 +363,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \begin{compactitem}
 \item Different default EAPI for profiles, \featureref{profile-eapi-default}.
 \item \t{assert} banned, \featureref{banned-commands}.
+\item \t{pipestatus}, \featureref{pipestatus}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 3dfc3e1..3c03f0b 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -205,6 +205,11 @@ completing. Ebuilds must not run any of these commands 
once the current phase fu
 failure), calls \t{die}, passing any parameters to it.
 In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as per
 section~\ref{sec:banned-commands}.
+\item[pipestatus] \featurelabel{pipestatus} Checks the shell's pipe status 
array, i.\,e.\ the exit
+status of the command(s) in the most recently executed foreground 
pipeline. Returns shell true
+(0) if all elements are zero, or the last non-zero element otherwise. If 
called with \t{-v}
+as the first argument, also outputs the pipe status array as a 
space-separated list.
+Only available in EAPIs listed in table~\ref{tab:pipestatus} as supporting 
\t{pipestatus}.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{9}
@@ -223,6 +228,20 @@ completing. Ebuilds must not run any of these commands 
once the current phase fu
 \end{tabular}
 \end{centertable}
 
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{EAPIs supporting \t{pipestatus}}
+\label{tab:pipestatus}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Supports \t{pipestatus}?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7, 8 & No  \\
+  9 & Yes \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \subsection{Patch commands}
 These commands are used during the \t{src_prepare} phase to apply patches to 
the package's sources.
 Ebuilds must not run any of these commands once the current phase function has 
returned.



  1   2   3   >