[gentoo-commits] proj/pms:eapi-9 commit in: /
commit: f4927680a3dc75db0d7ff5669622548e7667da76
Author: Ulrich Müller gentoo org>
AuthorDate: Sun Dec 14 19:20:12 2025 +
Commit: Ulrich Müller gentoo org>
CommitDate: Sun Dec 14 19:20:12 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=f4927680
Cheat sheet: EAPI 9 approval date
Signed-off-by: Ulrich Müller gentoo.org>
eapi-cheatsheet.tex | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/eapi-cheatsheet.tex b/eapi-cheatsheet.tex
index 920557c..57f64f5 100644
--- a/eapi-cheatsheet.tex
+++ b/eapi-cheatsheet.tex
@@ -577,7 +577,7 @@ differences between these EAPIs.
and LHA archives. See \featureref{unpack-extensions}.
\end{description}
-\section{EAPI 9}
+\section{EAPI 9 (2025-12-14)}
\label{sec:cs:eapi9}
\subsection{Additions/changes}
\label{sec:cs:eapi9-additions}
[gentoo-commits] proj/pms:eapi-9 commit in: /
commit: 62ba262306fc4fc2eade40854c629c9b1786c3bb
Author: Ulrich Müller gentoo org>
AuthorDate: Thu Jun 20 18:16:12 2024 +
Commit: Ulrich Müller gentoo org>
CommitDate: Tue Dec 2 19:05:24 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=62ba2623
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 99a3526..f07d0b4 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: /
commit: 15e4834617b9d9144460f4d3461e8d663bfce9ca
Author: Ulrich Müller gentoo org>
AuthorDate: Mon May 12 18:14:14 2025 +
Commit: Ulrich Müller gentoo org>
CommitDate: Tue Dec 2 19:05:23 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=15e48346
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 | 22 +-
2 files changed, 21 insertions(+), 5 deletions(-)
diff --git a/eapi-differences.tex b/eapi-differences.tex
index a411352..99a3526 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 48c341d..3f5592b 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -1302,21 +1302,33 @@ has returned.
\end{algorithmic}
\end{algorithm}
+\item[edo] \featurelabel{edo} Takes a command line, prints it to stderr and
executes the command.
+Specifically, the entire list of (one or more) arguments 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: /
commit: ef2c813cba5812475426562cc8080581e94e090f
Author: Ulrich Müller gentoo org>
AuthorDate: Sun Jun 8 16:41:33 2025 +
Commit: Ulrich Müller gentoo org>
CommitDate: Tue Dec 2 19:05:25 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=ef2c813c
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..920557c 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.3
+(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: /
commit: a7deee9559fd97309d432dca8e0f5d8f4baa946d
Author: Ulrich Müller gentoo org>
AuthorDate: Sun Jun 8 14:57:50 2025 +
Commit: Ulrich Müller gentoo org>
CommitDate: Tue Dec 2 19:05:24 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=a7deee95
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: /
commit: 869ca3bbb012be600cd3033174eff3951c310a89
Author: Ulrich Müller gentoo org>
AuthorDate: Mon Jan 20 13:21:44 2025 +
Commit: Ulrich Müller gentoo org>
CommitDate: Tue Dec 2 19:05:23 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=869ca3bb
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 | 21 +
2 files changed, 21 insertions(+), 4 deletions(-)
diff --git a/eapi-differences.tex b/eapi-differences.tex
index e18d5ca..a411352 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..48c341d 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -1101,20 +1101,33 @@ 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 at
least one element,
+shell false (1) otherwise. In particular, shell false is returned when
\t{REPLACING_VERSIONS}
+is empty.
+
+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: /
commit: c9407ad31d510cde9cfe9fd69186f21d8eead1a1
Author: Ulrich Müller gentoo org>
AuthorDate: Fri Nov 29 16:06:26 2024 +
Commit: Ulrich Müller gentoo org>
CommitDate: Tue Dec 2 19:05:22 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=c9407ad3
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 6b24b6e..e18d5ca 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: /
commit: b687ab901b72347b9f89c51e405578ec1ea37921
Author: Ulrich Müller gentoo org>
AuthorDate: Mon May 12 18:13:01 2025 +
Commit: Ulrich Müller gentoo org>
CommitDate: Tue Dec 2 19:05:22 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=b687ab90
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 b48b9fb..6b24b6e 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.3, \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: /
commit: 2992d696f94178613f99a2e2c91ba720707be1b7
Author: Ulrich Müller gentoo org>
AuthorDate: Fri Nov 29 16:02:56 2024 +
Commit: Ulrich Müller gentoo org>
CommitDate: Tue Dec 2 19:05:21 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=2992d696
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 bd621e2..b48b9fb 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.3, \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: /
commit: 4f5225a94cf3207a3857efe009f18283f142f148
Author: Ulrich Müller gentoo org>
AuthorDate: Mon Jan 13 21:14:36 2025 +
Commit: Ulrich Müller gentoo org>
CommitDate: Tue Dec 2 19:05:21 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=4f5225a9
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..5a59590 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}. 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: /
commit: 97bf88ff8da97e441f21a7108650f9a5dd50da70
Author: Ulrich Müller gentoo org>
AuthorDate: Sun Jun 8 14:57:50 2025 +
Commit: Ulrich Müller gentoo org>
CommitDate: Sun Nov 16 19:33:21 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=97bf88ff
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: /
commit: f2c7dc2c1e82aac7a4acb75e753b063fc001d130
Author: Ulrich Müller gentoo org>
AuthorDate: Fri Nov 29 16:06:26 2024 +
Commit: Ulrich Müller gentoo org>
CommitDate: Sun Nov 16 19:33:19 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=f2c7dc2c
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 6b24b6e..e18d5ca 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: /
commit: 6331fade0c2dae6fd9895d98092e1da281d2b76c
Author: Ulrich Müller gentoo org>
AuthorDate: Sun Jun 8 16:41:33 2025 +
Commit: Ulrich Müller gentoo org>
CommitDate: Sun Nov 16 19:33:21 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=6331fade
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..920557c 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.3
+(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: /
commit: 2d0b66480962486057acfbbc79e7b580b23d7cf2
Author: Ulrich Müller gentoo org>
AuthorDate: Mon May 12 18:14:14 2025 +
Commit: Ulrich Müller gentoo org>
CommitDate: Sun Nov 16 19:33:20 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=2d0b6648
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 a411352..99a3526 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: /
commit: f2060906a4daa5c378fe06048732f4f968a72f84
Author: Ulrich Müller gentoo org>
AuthorDate: Thu Jun 20 18:16:12 2024 +
Commit: Ulrich Müller gentoo org>
CommitDate: Sun Nov 16 19:33:20 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=f2060906
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 99a3526..f07d0b4 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: /
commit: 95634efb96e182c539e45e02be0531bea1822fcf
Author: Ulrich Müller gentoo org>
AuthorDate: Mon Jan 20 13:21:44 2025 +
Commit: Ulrich Müller gentoo org>
CommitDate: Sun Nov 16 19:33:19 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=95634efb
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 e18d5ca..a411352 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: /
commit: a5078391294268801caafda8002286fa1fb12f12
Author: Ulrich Müller gentoo org>
AuthorDate: Mon May 12 18:13:01 2025 +
Commit: Ulrich Müller gentoo org>
CommitDate: Sun Nov 16 19:33:18 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=a5078391
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 b48b9fb..6b24b6e 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.3, \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: /
commit: 944bde4b19783aa456afc53c4ffa1934b661aceb
Author: Ulrich Müller gentoo org>
AuthorDate: Fri Nov 29 16:02:56 2024 +
Commit: Ulrich Müller gentoo org>
CommitDate: Sun Nov 16 19:33:18 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=944bde4b
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 bd621e2..b48b9fb 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.3, \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: /
commit: d984a0f9ac4506b5995be68ce074425ef337f320
Author: Ulrich Müller gentoo org>
AuthorDate: Tue Jan 7 17:13:28 2025 +
Commit: Ulrich Müller gentoo org>
CommitDate: Sun Nov 16 19:33:17 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=d984a0f9
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 870f325..bd621e2 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.3, \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: /
commit: d58dfc973eeb38cb0c5b517859d427b5b373d11b
Author: Ulrich Müller gentoo org>
AuthorDate: Mon Jan 13 21:14:36 2025 +
Commit: Ulrich Müller gentoo org>
CommitDate: Sun Nov 16 19:33:17 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=d58dfc97
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: /
commit: 61efb00e5d6db4f4bf9fef037071bc7e63d75ec1
Author: Ulrich Müller gentoo org>
AuthorDate: Sat Jan 11 09:47:19 2025 +
Commit: Ulrich Müller gentoo org>
CommitDate: Sun Nov 16 19:33:16 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=61efb00e
EAPI 9: Bash version is 5.3
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..870f325 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.3 \\
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.3, \featureref{bash-version}.
\end{compactitem}
\ChangeWhenAddingAnEAPI{9}
diff --git a/ebuild-format.tex b/ebuild-format.tex
index 844f01a..0c39b36 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.3 & Yes \\
\bottomrule
\end{tabular}
\end{centertable}
[gentoo-commits] proj/pms:eapi-9 commit in: /
commit: af8e7fb602e4a0ef62b477cbd6a001504f4b59b3
Author: Ulrich Müller gentoo org>
AuthorDate: Tue Jan 7 17:09:52 2025 +
Commit: Ulrich Müller gentoo org>
CommitDate: Sun Nov 16 19:33:16 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=af8e7fb6
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: /
commit: f27af0e6ac48361c02b8e909231ea81f4aadaa54
Author: Ulrich Müller gentoo org>
AuthorDate: Tue Aug 3 16:32:47 2021 +
Commit: Ulrich Müller gentoo org>
CommitDate: Sun Nov 16 19:33:14 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=f27af0e6
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: /
commit: 45982b7c96e60bcb5b033b592125a8e16cce4073
Author: Ulrich Müller gentoo org>
AuthorDate: Sat May 17 06:33:24 2025 +
Commit: Ulrich Müller gentoo org>
CommitDate: Sun Nov 16 19:33:15 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=45982b7c
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: /
commit: 1b3865e56318b4b0a877ac09a0b78ad845f4d811
Author: Ulrich Müller gentoo org>
AuthorDate: Mon Feb 21 18:32:43 2022 +
Commit: Ulrich Müller gentoo org>
CommitDate: Sun Nov 16 19:33:14 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=1b3865e5
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: /
commit: fd2708540291b36f86566a4aa4babbe3f1ca8b2e
Author: Ulrich Müller gentoo org>
AuthorDate: Wed Oct 1 18:47:45 2025 +
Commit: Ulrich Müller gentoo org>
CommitDate: Thu Oct 2 21:39:19 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=fd270854
Makefile: New "check-html" target
Signed-off-by: Ulrich Müller gentoo.org>
Makefile | 5 -
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/Makefile b/Makefile
index 1850adf..5084e82 100644
--- a/Makefile
+++ b/Makefile
@@ -74,6 +74,9 @@ $(COMMITINFO): $(SOURCES)
reltag={$${reltag}}%n]{gitexinfo}%n" > $@; \
fi
+check-html: pms.html
+ xmllint --noout --nonet --valid $^
+
dist: $(SOURCES) $(COMMITINFO) pms.pdf pms.html
PV='$(PV)'; \
if test -z "$${PV}"; then \
@@ -100,7 +103,7 @@ clean:
maintainer-clean: clean
rm -f $(COMMITINFO)
-.PHONY: all html dist upload clean maintainer-clean
+.PHONY: all html check-html dist upload clean maintainer-clean
.DELETE_ON_ERROR:
.NOTPARALLEL:
[gentoo-commits] proj/pms:eapi-9 commit in: /
commit: c8bef70af0223ec814c9a16fec0a1d8895c71336
Author: Ulrich Müller gentoo org>
AuthorDate: Wed Oct 1 18:44:07 2025 +
Commit: Ulrich Müller gentoo org>
CommitDate: Wed Oct 1 18:44:07 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=c8bef70a
Makefile: Replace mk4ht with make4ht
Use the modern interface recommended by upstream. As a welcome
side-effect, postprocessing with sed is no longer necessary.
Signed-off-by: Ulrich Müller gentoo.org>
Makefile | 13 +
1 file changed, 1 insertion(+), 12 deletions(-)
diff --git a/Makefile b/Makefile
index 422dac9..1850adf 100644
--- a/Makefile
+++ b/Makefile
@@ -50,21 +50,10 @@ pms.dvi: $(LATEXFILES) pms.bbl $(COMMITINFO)
pms.html: $(LATEXFILES) pms.bbl $(COMMITINFO)
set -e; sum=''; \
while true; do \
- mk4ht xhlatex pms 'xhtml,fn-in,charset=utf-8' ' -cunihtf -utf8'; \
+ make4ht -f xhtml pms fn-in; \
oldsum=$${sum}; sum=$$(cksum $@); \
test "$${sum}" != "$${oldsum}" || break; \
done
- @# replace ligatures by their component letters
- LC_ALL=C sed -i "$$(printf 's/\\xef\\xac\\x8%s/%s/g;' \
- 0 ff 1 fi 2 fl 3 ffi 4 ffl)" $@
- @# remove redundant span elements
- LC_ALL=C sed -Ei ':x;/]*)?$$/{N;bx;};'\
- ':y;s,(]*>)([^<]*)\1,\1\2,;ty' $@
- @# guessable names for sections
- LC_ALL=C sed -Ei \
- -e 's/("#?)x1-[0-9]*00+([1-9][0-9]?")/\1chapter-\2/g' \
- -e 's/("#?)x1-[0-9]*00+([1-9][0-9]?(\.[0-9]+)+")/\1section-\2/g' \
- -e 's/("#?)x1-[0-9]*00+([A-Z](\.[0-9]+)*")/\1appendix-\2/g' $@
pms.bbl: pms.bib $(LATEXFILES) $(COMMITINFO)
$(aux-clean)
[gentoo-commits] proj/pms:eapi-9 commit in: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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}
