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

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

EAPI 9 no longer rewrites absolute symlinks

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

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 7b978ea..96ca568 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -180,6 +180,9 @@ Controllable stripping & \compactfeatureref{dostrip} &
 \t{unpack} support for \t{rar} & \compactfeatureref{unpack-extensions} &
 Yes & Yes & No & No \\
 
+Absolute symlink rewriting & \compactfeatureref{symlink-rewrite} &
+Yes & Yes & Yes & No \\
+
 \end{longtable}
 
 \chapter{Differences between EAPIs}
@@ -369,6 +372,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item Variables no longer exported, \featureref{export-vars}.
 \item \t{assert} banned, \featureref{banned-commands}.
 \item \t{pipestatus}, \featureref{pipestatus}.
+\item Absolute symlinks no longer rewritten, \featureref{symlink-rewrite}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/merge.tex b/merge.tex
index 27b0ba8..e51c1b8 100644
--- a/merge.tex
+++ b/merge.tex
@@ -138,8 +138,23 @@ Ebuilds must not attempt to merge a symlink on top of a 
directory.
 
 \subsection{Rewriting}
 
-Any absolute symlink whose link starts with \t{D} must be rewritten with the 
leading \t{D} removed.
-The package manager should issue a notice when doing this.
+\featurelabel{symlink-rewrite} In EAPIs listed in 
table~\ref{tab:symlink-rewrite} as rewriting
+symlinks, any absolute symlink whose link starts with \t{D} must be rewritten 
with the leading
+\t{D} removed. The package manager should issue a notice when encountering 
such a symlink.
+
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{Rewriting of absolute symlinks}
+\label{tab:symlink-rewrite}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Rewrite symlinks?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7, 8 & Yes \\
+  9 & No  \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
 
 \section{Hard links}
 



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

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

EAPI 9 bans assert

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

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

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

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



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

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

Add an EAPI 9 identical to EAPI 8

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

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

diff --git a/commands.tex b/commands.tex
index 2c9e594..81fd204 100644
--- a/commands.tex
+++ b/commands.tex
@@ -33,7 +33,7 @@ The following commands must always be available in the ebuild 
environment:
 table~\ref{tab:system-commands-table} as requiring GNU find.
 \end{compactitem}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{System commands for EAPIs}
 \label{tab:system-commands-table}
 \begin{tabular}{lll}
@@ -44,7 +44,7 @@ The following commands must always be available in the ebuild 
environment:
   \midrule
   0, 1, 2, 3, 4 & Undefined & Any \\
   5, 6  & Yes   & Any \\
-  7, 8  & Yes   & 2.7 \\
+  7, 8, 9   & Yes   & 2.7 \\
   \bottomrule
 \end{tabular}
 \end{centertable}

diff --git a/dependencies.tex b/dependencies.tex
index c1f7d6a..a826355 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -88,7 +88,7 @@ with the native build system (\t{CBUILD}). Ebuilds are 
allowed to call them in \
 \t{pkg_postinst}. Ebuilds may also call them in \t{pkg_prerm} and 
\t{pkg_postrm} but must not rely
 on them being available.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting additional dependency types}
 \label{tab:depend-table}
 \begin{tabular}{lll}
@@ -99,7 +99,7 @@ on them being available.
   \midrule
   0, 1, 2, 3, 4, 5, 6 & No  & No  \\
   7   & Yes & No  \\
-  8   & Yes & Yes \\
+  8, 9& Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -155,7 +155,7 @@ be surrounded on both sides by whitespace, except at the 
start and end of the st
 
 In particular, note that whitespace is not optional.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{REQUIRED_USE ??}\ groups}
 \label{tab:at-most-one-of-table}
 \begin{tabular}{ll}
@@ -164,7 +164,7 @@ In particular, note that whitespace is not optional.
   \multicolumn{1}{c}{\textbf{Supports \t{REQUIRED_USE ??}\ groups?}} \\
   \midrule
   0, 1, 2, 3, 4 & No  \\
-  5, 6, 7, 8& Yes \\
+  5, 6, 7, 8, 9 & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -204,7 +204,7 @@ In an exactly-one-of group, exactly one immediate child 
element must be matched.
 In EAPIs specified in table~\ref{tab:empty-dep-groups}, an empty 
exactly-one-of group counts as
 being matched.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Matching of empty dependency groups in EAPIs}
 \label{tab:empty-dep-groups}
 \begin{tabular}{ll}
@@ -214,7 +214,7 @@ being matched.
 are matched?}} \\
   \midrule
   0, 1, 2, 3, 4, 5, 6 & Yes \\
-  7, 8& No  \\
+  7, 8, 9 & No  \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -250,7 +250,7 @@ manager must warn or error if this feature is used with an 
EAPI not supporting u
 
 \note{Order is important. The slot restriction must come before use 
dependencies.}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Support for \t{SLOT} dependencies and sub-slots in EAPIs}
 \label{tab:slot-deps-table}
 \begin{tabular}{lll}
@@ -261,12 +261,12 @@ manager must warn or error if this feature is used with 
an EAPI not supporting u
   \midrule
   0 & No & No  \\
   1, 2, 3, 4& Named only & No  \\
-  5, 6, 7, 8& Named and operator & Yes \\
+  5, 6, 7, 8, 9 & Named and operator & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{USE} dependencies}
 \label{tab:use-deps-table}
 \begin{tabular}{ll}
@@ -276,7 +276,7 @@ manager must warn or error if this feature is used with an 

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

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

EAPI 9 has pipestatus

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

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

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

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



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

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

EAPI 9: Bash version is 5.2

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

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

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

diff --git a/ebuild-format.tex b/ebuild-format.tex
index 844f01a..a543013 100644
--- a/ebuild-format.tex
+++ b/ebuild-format.tex
@@ -32,7 +32,8 @@ output or standard error, or modify the state of the system 
in any way.
   \midrule
   0, 1, 2, 3, 4, 5  & 3.2 & No  \\
   6, 7  & 4.2 & Yes \\
-  8, 9  & 5.0 & Yes \\
+  8 & 5.0 & Yes \\
+  9 & 5.2 & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

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

EAPI 9 profile EAPI defaults to top-level

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

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

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

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



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

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

EAPI 9: Special profile variables are no longer exported

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

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

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

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



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

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

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

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

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

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

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

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

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

EAPI 9: Defined variables are no longer exported

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

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

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

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 268fa36..4f19d70 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -1,10 +1,10 @@
 \section{Defined variables}
 \label{sec:ebuild-env-vars}
 
-The package manager must define the following environment variables. Not all 
variables are
-universally meaningful; variables that are not meaningful in a given phase or 
in global scope may
-be unset or set to any value. Ebuilds must not attempt to modify any of these 
variables, unless
-otherwise specified.
+The package manager must define the following variables. Not all variables are 
universally
+meaningful; variables that are not meaningful in a given phase or in global 
scope may be unset
+or set to any value. Ebuilds must not attempt to modify any of these 
variables, unless otherwise
+specified.
 
 Because of their special meanings, these variables may not be preserved 
consistently across all
 phases as would normally happen due to environment saving (see 
section~\ref{sec:ebuild-env-state}).
@@ -12,6 +12,26 @@ For example, \t{EBUILD_PHASE} is different for every phase, 
and \t{ROOT} may hav
 the various different \t{pkg_*} phases. Ebuilds must recalculate any variable 
they derive from an
 inconsistent variable.
 
+\featurelabel{export-vars} These variables are either exported to the 
environment or kept as
+unexported shell variables, as specified for EAPIs in 
table~\ref{tab:export-vars}; exceptions are
+\t{TMPDIR} and \t{HOME} which are always exported to the environment. In EAPIs 
where variables are
+not exported, the package manager must pass those that are required by 
ebuild-specific external
+commands (see section~\ref{sec:pkg-mgr-commands}) in an implementation-defined 
manner.
+
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{EAPIs with variables exported to the environment}
+\label{tab:export-vars}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Variables exported?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7, 8 & Yes \\
+  9 & No  \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \begin{landscape}
 % Reduce width of text area to make room for margin notes
 \addtolength{\hsize}{-25mm}
@@ -168,13 +188,15 @@ inconsistent variable.
 \t{TMPDIR} &
 All &
 Partially\footnotemark[\value{footnote}] &
-Must be set to the location of a usable temporary directory, for any 
applications
-called by an ebuild. Must not be used by ebuilds directly; see \t{T} 
above. \\
+Must be set to the location of a usable temporary directory, for any 
applications called
+by an ebuild. Must not be used by ebuilds directly; see \t{T} above. 
\t{TMPDIR} is always
+exported to the environment. \\
 \t{HOME} &
 All &
 Partially\footnotemark[\value{footnote}] &
 The full path to an appropriate temporary directory for use by any 
programs invoked by the
-ebuild that may read or modify the home directory. \\
+ebuild that may read or modify the home directory. \t{HOME} is always 
exported to the
+environment. \\
 \t{EPREFIX} &
 All &
 Yes &

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

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

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

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

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

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

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

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

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

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

EAPI 9 no longer rewrites absolute symlinks

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

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index b0fac03..a9e8285 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -180,6 +180,9 @@ Controllable stripping & \compactfeatureref{dostrip} &
 \t{unpack} support for \t{rar} & \compactfeatureref{unpack-extensions} &
 Yes & Yes & No & No \\
 
+Absolute symlink rewriting & \compactfeatureref{symlink-rewrite} &
+Yes & Yes & Yes & No \\
+
 \end{longtable}
 
 \chapter{Differences between EAPIs}
@@ -369,6 +372,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item Defined variables no longer exported, \featureref{export-vars}.
 \item \t{assert} banned, \featureref{banned-commands}.
 \item \t{pipestatus}, \featureref{pipestatus}.
+\item Absolute symlinks no longer rewritten, \featureref{symlink-rewrite}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/merge.tex b/merge.tex
index 27b0ba8..e51c1b8 100644
--- a/merge.tex
+++ b/merge.tex
@@ -138,8 +138,23 @@ Ebuilds must not attempt to merge a symlink on top of a 
directory.
 
 \subsection{Rewriting}
 
-Any absolute symlink whose link starts with \t{D} must be rewritten with the 
leading \t{D} removed.
-The package manager should issue a notice when doing this.
+\featurelabel{symlink-rewrite} In EAPIs listed in 
table~\ref{tab:symlink-rewrite} as rewriting
+symlinks, any absolute symlink whose link starts with \t{D} must be rewritten 
with the leading
+\t{D} removed. The package manager should issue a notice when encountering 
such a symlink.
+
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{Rewriting of absolute symlinks}
+\label{tab:symlink-rewrite}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Rewrite symlinks?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7, 8 & Yes \\
+  9 & No  \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
 
 \section{Hard links}
 



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

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

EAPI 9 bans assert

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

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

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

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



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

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

EAPI 9 profile EAPI defaults to top-level

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

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

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

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



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

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

EAPI 9: Bash version is 5.2

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

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

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

diff --git a/ebuild-format.tex b/ebuild-format.tex
index 844f01a..a543013 100644
--- a/ebuild-format.tex
+++ b/ebuild-format.tex
@@ -32,7 +32,8 @@ output or standard error, or modify the state of the system 
in any way.
   \midrule
   0, 1, 2, 3, 4, 5  & 3.2 & No  \\
   6, 7  & 4.2 & Yes \\
-  8, 9  & 5.0 & Yes \\
+  8 & 5.0 & Yes \\
+  9 & 5.2 & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

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

EAPI 9: Defined variables are no longer exported

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

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

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

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 268fa36..4f19d70 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -1,10 +1,10 @@
 \section{Defined variables}
 \label{sec:ebuild-env-vars}
 
-The package manager must define the following environment variables. Not all 
variables are
-universally meaningful; variables that are not meaningful in a given phase or 
in global scope may
-be unset or set to any value. Ebuilds must not attempt to modify any of these 
variables, unless
-otherwise specified.
+The package manager must define the following variables. Not all variables are 
universally
+meaningful; variables that are not meaningful in a given phase or in global 
scope may be unset
+or set to any value. Ebuilds must not attempt to modify any of these 
variables, unless otherwise
+specified.
 
 Because of their special meanings, these variables may not be preserved 
consistently across all
 phases as would normally happen due to environment saving (see 
section~\ref{sec:ebuild-env-state}).
@@ -12,6 +12,26 @@ For example, \t{EBUILD_PHASE} is different for every phase, 
and \t{ROOT} may hav
 the various different \t{pkg_*} phases. Ebuilds must recalculate any variable 
they derive from an
 inconsistent variable.
 
+\featurelabel{export-vars} These variables are either exported to the 
environment or kept as
+unexported shell variables, as specified for EAPIs in 
table~\ref{tab:export-vars}; exceptions are
+\t{TMPDIR} and \t{HOME} which are always exported to the environment. In EAPIs 
where variables are
+not exported, the package manager must pass those that are required by 
ebuild-specific external
+commands (see section~\ref{sec:pkg-mgr-commands}) in an implementation-defined 
manner.
+
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{EAPIs with variables exported to the environment}
+\label{tab:export-vars}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Variables exported?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7, 8 & Yes \\
+  9 & No  \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \begin{landscape}
 % Reduce width of text area to make room for margin notes
 \addtolength{\hsize}{-25mm}
@@ -168,13 +188,15 @@ inconsistent variable.
 \t{TMPDIR} &
 All &
 Partially\footnotemark[\value{footnote}] &
-Must be set to the location of a usable temporary directory, for any 
applications
-called by an ebuild. Must not be used by ebuilds directly; see \t{T} 
above. \\
+Must be set to the location of a usable temporary directory, for any 
applications called
+by an ebuild. Must not be used by ebuilds directly; see \t{T} above. 
\t{TMPDIR} is always
+exported to the environment. \\
 \t{HOME} &
 All &
 Partially\footnotemark[\value{footnote}] &
 The full path to an appropriate temporary directory for use by any 
programs invoked by the
-ebuild that may read or modify the home directory. \\
+ebuild that may read or modify the home directory. \t{HOME} is always 
exported to the
+environment. \\
 \t{EPREFIX} &
 All &
 Yes &

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

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

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

Add an EAPI 9 identical to EAPI 8

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

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

diff --git a/commands.tex b/commands.tex
index 2c9e594..81fd204 100644
--- a/commands.tex
+++ b/commands.tex
@@ -33,7 +33,7 @@ The following commands must always be available in the ebuild 
environment:
 table~\ref{tab:system-commands-table} as requiring GNU find.
 \end{compactitem}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{System commands for EAPIs}
 \label{tab:system-commands-table}
 \begin{tabular}{lll}
@@ -44,7 +44,7 @@ The following commands must always be available in the ebuild 
environment:
   \midrule
   0, 1, 2, 3, 4 & Undefined & Any \\
   5, 6  & Yes   & Any \\
-  7, 8  & Yes   & 2.7 \\
+  7, 8, 9   & Yes   & 2.7 \\
   \bottomrule
 \end{tabular}
 \end{centertable}

diff --git a/dependencies.tex b/dependencies.tex
index c1f7d6a..a826355 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -88,7 +88,7 @@ with the native build system (\t{CBUILD}). Ebuilds are 
allowed to call them in \
 \t{pkg_postinst}. Ebuilds may also call them in \t{pkg_prerm} and 
\t{pkg_postrm} but must not rely
 on them being available.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting additional dependency types}
 \label{tab:depend-table}
 \begin{tabular}{lll}
@@ -99,7 +99,7 @@ on them being available.
   \midrule
   0, 1, 2, 3, 4, 5, 6 & No  & No  \\
   7   & Yes & No  \\
-  8   & Yes & Yes \\
+  8, 9& Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -155,7 +155,7 @@ be surrounded on both sides by whitespace, except at the 
start and end of the st
 
 In particular, note that whitespace is not optional.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{REQUIRED_USE ??}\ groups}
 \label{tab:at-most-one-of-table}
 \begin{tabular}{ll}
@@ -164,7 +164,7 @@ In particular, note that whitespace is not optional.
   \multicolumn{1}{c}{\textbf{Supports \t{REQUIRED_USE ??}\ groups?}} \\
   \midrule
   0, 1, 2, 3, 4 & No  \\
-  5, 6, 7, 8& Yes \\
+  5, 6, 7, 8, 9 & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -204,7 +204,7 @@ In an exactly-one-of group, exactly one immediate child 
element must be matched.
 In EAPIs specified in table~\ref{tab:empty-dep-groups}, an empty 
exactly-one-of group counts as
 being matched.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Matching of empty dependency groups in EAPIs}
 \label{tab:empty-dep-groups}
 \begin{tabular}{ll}
@@ -214,7 +214,7 @@ being matched.
 are matched?}} \\
   \midrule
   0, 1, 2, 3, 4, 5, 6 & Yes \\
-  7, 8& No  \\
+  7, 8, 9 & No  \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -250,7 +250,7 @@ manager must warn or error if this feature is used with an 
EAPI not supporting u
 
 \note{Order is important. The slot restriction must come before use 
dependencies.}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Support for \t{SLOT} dependencies and sub-slots in EAPIs}
 \label{tab:slot-deps-table}
 \begin{tabular}{lll}
@@ -261,12 +261,12 @@ manager must warn or error if this feature is used with 
an EAPI not supporting u
   \midrule
   0 & No & No  \\
   1, 2, 3, 4& Named only & No  \\
-  5, 6, 7, 8& Named and operator & Yes \\
+  5, 6, 7, 8, 9 & Named and operator & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{USE} dependencies}
 \label{tab:use-deps-table}
 \begin{tabular}{ll}
@@ -276,7 +276,7 @@ manager must warn or error if this feature is used with an 

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

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

EAPI 9 has pipestatus

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

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

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

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



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

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

EAPI 9 has pipestatus

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

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

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

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



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

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

EAPI 9: Defined variables are no longer exported

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

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

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

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 871a0d2..14ef7bc 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -1,10 +1,10 @@
 \section{Defined variables}
 \label{sec:ebuild-env-vars}
 
-The package manager must define the following environment variables. Not all 
variables are
-universally meaningful; variables that are not meaningful in a given phase or 
in global scope may
-be unset or set to any value. Ebuilds must not attempt to modify any of these 
variables, unless
-otherwise specified.
+The package manager must define the following variables. Not all variables are 
universally
+meaningful; variables that are not meaningful in a given phase or in global 
scope may be unset
+or set to any value. Ebuilds must not attempt to modify any of these 
variables, unless otherwise
+specified.
 
 Because of their special meanings, these variables may not be preserved 
consistently across all
 phases as would normally happen due to environment saving (see 
section~\ref{sec:ebuild-env-state}).
@@ -12,6 +12,26 @@ For example, \t{EBUILD_PHASE} is different for every phase, 
and \t{ROOT} may hav
 the various different \t{pkg_*} phases. Ebuilds must recalculate any variable 
they derive from an
 inconsistent variable.
 
+\featurelabel{export-vars} These variables are either exported to the 
environment or kept as
+unexported shell variables, as specified for EAPIs in 
table~\ref{tab:export-vars}; exceptions are
+\t{TMPDIR} and \t{HOME} which are always exported to the environment. In EAPIs 
where variables are
+not exported, the package manager must pass those that are required by 
ebuild-specific external
+commands (see section~\ref{sec:pkg-mgr-commands}) in an implementation-defined 
manner.
+
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{EAPIs with variables exported to the environment}
+\label{tab:export-vars}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Variables exported?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7, 8 & Yes \\
+  9 & No  \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \begin{landscape}
 % Reduce width of text area to make room for margin notes
 \addtolength{\hsize}{-25mm}
@@ -168,13 +188,15 @@ inconsistent variable.
 \t{TMPDIR} &
 All &
 Partially\footnotemark[\value{footnote}] &
-Must be set to the location of a usable temporary directory, for any 
applications
-called by an ebuild. Must not be used by ebuilds directly; see \t{T} 
above. \\
+Must be set to the location of a usable temporary directory, for any 
applications called
+by an ebuild. Must not be used by ebuilds directly; see \t{T} above. 
\t{TMPDIR} is always
+exported to the environment. \\
 \t{HOME} &
 All &
 Partially\footnotemark[\value{footnote}] &
 The full path to an appropriate temporary directory for use by any 
programs invoked by the
-ebuild that may read or modify the home directory. \\
+ebuild that may read or modify the home directory. \t{HOME} is always 
exported to the
+environment. \\
 \t{EPREFIX} &
 All &
 Yes &

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

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

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

EAPI 9 bans assert

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

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

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

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



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

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

EAPI 9: Bash version is 5.2

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

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

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

diff --git a/ebuild-format.tex b/ebuild-format.tex
index 844f01a..a543013 100644
--- a/ebuild-format.tex
+++ b/ebuild-format.tex
@@ -32,7 +32,8 @@ output or standard error, or modify the state of the system 
in any way.
   \midrule
   0, 1, 2, 3, 4, 5  & 3.2 & No  \\
   6, 7  & 4.2 & Yes \\
-  8, 9  & 5.0 & Yes \\
+  8 & 5.0 & Yes \\
+  9 & 5.2 & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

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

EAPI 9 no longer rewrites absolute symlinks

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

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index b0fac03..a9e8285 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -180,6 +180,9 @@ Controllable stripping & \compactfeatureref{dostrip} &
 \t{unpack} support for \t{rar} & \compactfeatureref{unpack-extensions} &
 Yes & Yes & No & No \\
 
+Absolute symlink rewriting & \compactfeatureref{symlink-rewrite} &
+Yes & Yes & Yes & No \\
+
 \end{longtable}
 
 \chapter{Differences between EAPIs}
@@ -369,6 +372,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item Defined variables no longer exported, \featureref{export-vars}.
 \item \t{assert} banned, \featureref{banned-commands}.
 \item \t{pipestatus}, \featureref{pipestatus}.
+\item Absolute symlinks no longer rewritten, \featureref{symlink-rewrite}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/merge.tex b/merge.tex
index 27b0ba8..e51c1b8 100644
--- a/merge.tex
+++ b/merge.tex
@@ -138,8 +138,23 @@ Ebuilds must not attempt to merge a symlink on top of a 
directory.
 
 \subsection{Rewriting}
 
-Any absolute symlink whose link starts with \t{D} must be rewritten with the 
leading \t{D} removed.
-The package manager should issue a notice when doing this.
+\featurelabel{symlink-rewrite} In EAPIs listed in 
table~\ref{tab:symlink-rewrite} as rewriting
+symlinks, any absolute symlink whose link starts with \t{D} must be rewritten 
with the leading
+\t{D} removed. The package manager should issue a notice when encountering 
such a symlink.
+
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{Rewriting of absolute symlinks}
+\label{tab:symlink-rewrite}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Rewrite symlinks?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7, 8 & Yes \\
+  9 & No  \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
 
 \section{Hard links}
 



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

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

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

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

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

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

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

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

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

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

EAPI 9 profile EAPI defaults to top-level

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

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

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

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



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

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

EAPI 9 no longer rewrites absolute symlinks

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

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index fcaac92..c8f8a44 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -177,6 +177,9 @@ Controllable stripping & \compactfeatureref{dostrip} &
 \t{unpack} support for \t{rar} & \compactfeatureref{unpack-extensions} &
 Yes & Yes & No & No \\
 
+Absolute symlink rewriting & \compactfeatureref{symlink-rewrite} &
+Yes & Yes & Yes & No \\
+
 \end{longtable}
 
 \chapter{Differences between EAPIs}
@@ -364,6 +367,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item Different default EAPI for profiles, \featureref{profile-eapi-default}.
 \item \t{assert} banned, \featureref{banned-commands}.
 \item \t{pipestatus}, \featureref{pipestatus}.
+\item Absolute symlinks no longer rewritten, \featureref{symlink-rewrite}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/merge.tex b/merge.tex
index 27b0ba8..e51c1b8 100644
--- a/merge.tex
+++ b/merge.tex
@@ -138,8 +138,23 @@ Ebuilds must not attempt to merge a symlink on top of a 
directory.
 
 \subsection{Rewriting}
 
-Any absolute symlink whose link starts with \t{D} must be rewritten with the 
leading \t{D} removed.
-The package manager should issue a notice when doing this.
+\featurelabel{symlink-rewrite} In EAPIs listed in 
table~\ref{tab:symlink-rewrite} as rewriting
+symlinks, any absolute symlink whose link starts with \t{D} must be rewritten 
with the leading
+\t{D} removed. The package manager should issue a notice when encountering 
such a symlink.
+
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{Rewriting of absolute symlinks}
+\label{tab:symlink-rewrite}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Rewrite symlinks?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7, 8 & Yes \\
+  9 & No  \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
 
 \section{Hard links}
 



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

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

EAPI 9 bans assert

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

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

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

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



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

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

Add an EAPI 9 identical to EAPI 8

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

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

diff --git a/commands.tex b/commands.tex
index 2c9e594..81fd204 100644
--- a/commands.tex
+++ b/commands.tex
@@ -33,7 +33,7 @@ The following commands must always be available in the ebuild 
environment:
 table~\ref{tab:system-commands-table} as requiring GNU find.
 \end{compactitem}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{System commands for EAPIs}
 \label{tab:system-commands-table}
 \begin{tabular}{lll}
@@ -44,7 +44,7 @@ The following commands must always be available in the ebuild 
environment:
   \midrule
   0, 1, 2, 3, 4 & Undefined & Any \\
   5, 6  & Yes   & Any \\
-  7, 8  & Yes   & 2.7 \\
+  7, 8, 9   & Yes   & 2.7 \\
   \bottomrule
 \end{tabular}
 \end{centertable}

diff --git a/dependencies.tex b/dependencies.tex
index c1f7d6a..a826355 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -88,7 +88,7 @@ with the native build system (\t{CBUILD}). Ebuilds are 
allowed to call them in \
 \t{pkg_postinst}. Ebuilds may also call them in \t{pkg_prerm} and 
\t{pkg_postrm} but must not rely
 on them being available.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting additional dependency types}
 \label{tab:depend-table}
 \begin{tabular}{lll}
@@ -99,7 +99,7 @@ on them being available.
   \midrule
   0, 1, 2, 3, 4, 5, 6 & No  & No  \\
   7   & Yes & No  \\
-  8   & Yes & Yes \\
+  8, 9& Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -155,7 +155,7 @@ be surrounded on both sides by whitespace, except at the 
start and end of the st
 
 In particular, note that whitespace is not optional.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{REQUIRED_USE ??}\ groups}
 \label{tab:at-most-one-of-table}
 \begin{tabular}{ll}
@@ -164,7 +164,7 @@ In particular, note that whitespace is not optional.
   \multicolumn{1}{c}{\textbf{Supports \t{REQUIRED_USE ??}\ groups?}} \\
   \midrule
   0, 1, 2, 3, 4 & No  \\
-  5, 6, 7, 8& Yes \\
+  5, 6, 7, 8, 9 & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -204,7 +204,7 @@ In an exactly-one-of group, exactly one immediate child 
element must be matched.
 In EAPIs specified in table~\ref{tab:empty-dep-groups}, an empty 
exactly-one-of group counts as
 being matched.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Matching of empty dependency groups in EAPIs}
 \label{tab:empty-dep-groups}
 \begin{tabular}{ll}
@@ -214,7 +214,7 @@ being matched.
 are matched?}} \\
   \midrule
   0, 1, 2, 3, 4, 5, 6 & Yes \\
-  7, 8& No  \\
+  7, 8, 9 & No  \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -250,7 +250,7 @@ manager must warn or error if this feature is used with an 
EAPI not supporting u
 
 \note{Order is important. The slot restriction must come before use 
dependencies.}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Support for \t{SLOT} dependencies and sub-slots in EAPIs}
 \label{tab:slot-deps-table}
 \begin{tabular}{lll}
@@ -261,12 +261,12 @@ manager must warn or error if this feature is used with 
an EAPI not supporting u
   \midrule
   0 & No & No  \\
   1, 2, 3, 4& Named only & No  \\
-  5, 6, 7, 8& Named and operator & Yes \\
+  5, 6, 7, 8, 9 & Named and operator & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{USE} dependencies}
 \label{tab:use-deps-table}
 \begin{tabular}{ll}
@@ -276,7 +276,7 @@ manager must warn or error if this feature is used with an 

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

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

EAPI 9 has pipestatus

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

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

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

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



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

2025-01-10 Thread Ulrich Müller
commit: 4a450295fb452838887b61a46bf538ba6015a791
Author: Ulrich Müller  gentoo  org>
AuthorDate: Mon Feb 21 18:32:43 2022 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Thu Jan  9 17:39:59 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=4a450295

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



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

2025-01-07 Thread Ulrich Müller
commit: 3904735669cafa0d5363cd7421fdd36ac1af7d4a
Author: Ulrich Müller  gentoo  org>
AuthorDate: Fri Nov 29 16:02:56 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Tue Jan  7 17:15:33 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=39047356

EAPI 9 bans assert

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

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

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

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



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

2025-01-07 Thread Ulrich Müller
commit: 64de5e4a36cbb0c0b431b2bea02dd28641e44c16
Author: Ulrich Müller  gentoo  org>
AuthorDate: Fri Nov 29 16:06:26 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Tue Jan  7 17:15:33 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=64de5e4a

EAPI 9 has pipestatus

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

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

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

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



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

2025-01-07 Thread Ulrich Müller
commit: 944829aefa33ae47c1f0d160c0eca723868a9953
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun Dec  1 11:28:53 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Tue Jan  7 17:15:35 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=944829ae

pms.cls: Fine-tune page breaking and float placement

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

 pms.cls | 9 +
 1 file changed, 9 insertions(+)

diff --git a/pms.cls b/pms.cls
index 571232f..006aed3 100644
--- a/pms.cls
+++ b/pms.cls
@@ -177,6 +177,15 @@
 \setlength\hfuzz{0.2pt}  % was 0.1pt
 \setlength\emergencystretch{1em} % was 0
 
+% Avoid widows and orphans
+\widowpenalty=500% was 150
+\clubpenalty=500 % was 150
+
+% Allow more floats on one page because we have many small tables
+\setcounter{topnumber}{5}% was 2
+\setcounter{bottomnumber}{2} % was 1
+\setcounter{totalnumber}{5}  % was 3
+
 % Don't add extra vertical space, to avoid underfull boxes. Only affects
 % two-sided layout, for one-sided it is already the default
 \raggedbottom



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

2025-01-07 Thread Ulrich Müller
commit: 5d06ea0abcb0e0c09a710bdd95290c04f9e8357d
Author: Ulrich Müller  gentoo  org>
AuthorDate: Thu Jun 20 18:16:12 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Tue Jan  7 17:15:34 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=5d06ea0a

EAPI 9 no longer rewrites absolute symlinks

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

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index fcaac92..c8f8a44 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -177,6 +177,9 @@ Controllable stripping & \compactfeatureref{dostrip} &
 \t{unpack} support for \t{rar} & \compactfeatureref{unpack-extensions} &
 Yes & Yes & No & No \\
 
+Absolute symlink rewriting & \compactfeatureref{symlink-rewrite} &
+Yes & Yes & Yes & No \\
+
 \end{longtable}
 
 \chapter{Differences between EAPIs}
@@ -364,6 +367,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item Different default EAPI for profiles, \featureref{profile-eapi-default}.
 \item \t{assert} banned, \featureref{banned-commands}.
 \item \t{pipestatus}, \featureref{pipestatus}.
+\item Absolute symlinks no longer rewritten, \featureref{symlink-rewrite}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/merge.tex b/merge.tex
index 27b0ba8..e51c1b8 100644
--- a/merge.tex
+++ b/merge.tex
@@ -138,8 +138,23 @@ Ebuilds must not attempt to merge a symlink on top of a 
directory.
 
 \subsection{Rewriting}
 
-Any absolute symlink whose link starts with \t{D} must be rewritten with the 
leading \t{D} removed.
-The package manager should issue a notice when doing this.
+\featurelabel{symlink-rewrite} In EAPIs listed in 
table~\ref{tab:symlink-rewrite} as rewriting
+symlinks, any absolute symlink whose link starts with \t{D} must be rewritten 
with the leading
+\t{D} removed. The package manager should issue a notice when encountering 
such a symlink.
+
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{Rewriting of absolute symlinks}
+\label{tab:symlink-rewrite}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Rewrite symlinks?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7, 8 & Yes \\
+  9 & No  \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
 
 \section{Hard links}
 



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

2025-01-07 Thread Ulrich Müller
commit: f0727dd80861f0ed78e53772cbb1817b8fd86474
Author: Ulrich Müller  gentoo  org>
AuthorDate: Fri Nov 29 16:02:56 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Tue Jan  7 11:00:07 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=f0727dd8

EAPI 9: assert banned

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

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

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

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



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

2025-01-07 Thread Ulrich Müller
commit: 8075323bf7451a2457a83d3c62a72f3b42afea38
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun Dec  1 11:28:53 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Tue Jan  7 11:01:49 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=8075323b

pms.cls: Fine-tune page breaking and float placement

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

 pms.cls | 9 +
 1 file changed, 9 insertions(+)

diff --git a/pms.cls b/pms.cls
index 571232f..006aed3 100644
--- a/pms.cls
+++ b/pms.cls
@@ -177,6 +177,15 @@
 \setlength\hfuzz{0.2pt}  % was 0.1pt
 \setlength\emergencystretch{1em} % was 0
 
+% Avoid widows and orphans
+\widowpenalty=500% was 150
+\clubpenalty=500 % was 150
+
+% Allow more floats on one page because we have many small tables
+\setcounter{topnumber}{5}% was 2
+\setcounter{bottomnumber}{2} % was 1
+\setcounter{totalnumber}{5}  % was 3
+
 % Don't add extra vertical space, to avoid underfull boxes. Only affects
 % two-sided layout, for one-sided it is already the default
 \raggedbottom



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

2025-01-07 Thread Ulrich Müller
commit: d942a81038e8a1ccaec5b549b19d2e5043d6ba8a
Author: Ulrich Müller  gentoo  org>
AuthorDate: Thu Jun 20 18:16:12 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Tue Jan  7 11:01:46 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=d942a810

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 2533922..fe4eec6 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -177,6 +177,9 @@ Controllable stripping & \compactfeatureref{dostrip} &
 \t{unpack} support for \t{rar} & \compactfeatureref{unpack-extensions} &
 Yes & Yes & No & No \\
 
+Absolute symlink rewriting & \compactfeatureref{symlink-rewrite} &
+Yes & Yes & Yes & No \\
+
 \end{longtable}
 
 \chapter{Differences between EAPIs}
@@ -364,6 +367,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \item Different default EAPI for profiles, \featureref{profile-eapi-default}.
 \item \t{assert} banned, \featureref{banned-commands}.
 \item \t{pipestatus} support, \featureref{pipestatus}.
+\item Absolute symlinks no longer being rewritten, 
\featureref{symlink-rewrite}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/merge.tex b/merge.tex
index 27b0ba8..e51c1b8 100644
--- a/merge.tex
+++ b/merge.tex
@@ -138,8 +138,23 @@ Ebuilds must not attempt to merge a symlink on top of a 
directory.
 
 \subsection{Rewriting}
 
-Any absolute symlink whose link starts with \t{D} must be rewritten with the 
leading \t{D} removed.
-The package manager should issue a notice when doing this.
+\featurelabel{symlink-rewrite} In EAPIs listed in 
table~\ref{tab:symlink-rewrite} as rewriting
+symlinks, any absolute symlink whose link starts with \t{D} must be rewritten 
with the leading
+\t{D} removed. The package manager should issue a notice when encountering 
such a symlink.
+
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{Rewriting of absolute symlinks}
+\label{tab:symlink-rewrite}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Rewrite symlinks?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7, 8 & Yes \\
+  9 & No  \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
 
 \section{Hard links}
 



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

2025-01-07 Thread Ulrich Müller
commit: a4f4a8fde2473f90824372689c5d85ebc4f199fb
Author: Ulrich Müller  gentoo  org>
AuthorDate: Fri Nov 29 16:06:26 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Tue Jan  7 11:00:30 2025 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=a4f4a8fd

EAPI 9 has pipestatus

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

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

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

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



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

2024-12-11 Thread Ulrich Müller
commit: 455d361caed27329969deda17a3766beab6de591
Author: Ulrich Müller  gentoo  org>
AuthorDate: Mon Sep  9 16:55:36 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Sep  9 16:55:36 2024 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=455d361c

pkg-mgr-commands.tex: Clarify "skipped silently" in unpack

The previous wording was added in commit 634c32f with the EAPI 3
(later to become EAPI 4) draft. The commit message doesn't give any
rationale for "silently". It may well be that the wording is a remnant
of the rejected "unpack --if-compressed" feature.

See also the discussion in the 2009-04-23 council meeting:
https://projects.gentoo.org/council/meeting-logs/20090423.txt
(starting at 21:35).

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

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

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 4c84b68..d98574d 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -1126,8 +1126,8 @@ has returned.
 listed as \emph{not} supporting such paths, \t{unpack} shall abort the 
build process.
 \end{compactitem}
 
-Any unrecognised file format shall be skipped silently. If unpacking a 
supported file format
-fails, \t{unpack} shall abort the build process.
+Any unrecognised file format shall be skipped without raising an error. If 
unpacking a supported
+file format fails, \t{unpack} shall abort the build process.
 
 \featurelabel{unpack-extensions} Must be able to unpack the following file 
formats, if the
 relevant binaries are available:



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

2024-12-11 Thread Ulrich Müller
commit: 01f4b868f6fc3e0e9637c7e6aa4d07b1e570f727
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun May 12 18:34:17 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Tue Jun 11 17:10:56 2024 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=01f4b868

pms.cls: Use sans serif font for title and headings

This tries to update the printed version to have a more modern look.
It is somewhat inspired by the KOMA-Script classes, e.g. scrreprt.cls,
which also use sans-serif fonts for their headings.

Slightly reduce the size of chapter headings (again, inspired by
KOMA-Script, with the headings=normal package option).

Note that the Helvetica font specified by helvet.sty was never used,
see also the commit message of commit 9d68105.

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

 pms.cls | 20 +---
 1 file changed, 17 insertions(+), 3 deletions(-)

diff --git a/pms.cls b/pms.cls
index c8c6101..571232f 100644
--- a/pms.cls
+++ b/pms.cls
@@ -11,7 +11,6 @@
 \ProcessOptions\relax
 \LoadClass{\ClassToLoad}
 \PassOptionsToPackage{T1}{fontenc}
-\PassOptionsToPackage{scaled=0.92}{helvet}
 \PassOptionsToPackage{orig,english}{isodate}
 % Dimensions of the text area. Define a narrow left margin to make
 % room for margin notes in the right (outer) margin
@@ -24,6 +23,7 @@
 \PassOptionsToPackage{nohyphen}{underscore}
 \PassOptionsToPackage{hang,flushmargin}{footmisc}
 \PassOptionsToPackage{nottoc,notlot,notlof}{tocbibind}
+\PassOptionsToPackage{defaultsans,scaled=0.92}{opensans}
 \PassOptionsToPackage{hyphens}{url} % url.sty implicitly loaded by hyperref
 \PassOptionsToPackage{hyperfootnotes=false}{hyperref} % footmisc compatibility
 \PassOptionsToPackage{local}{gitinfo2}
@@ -48,6 +48,8 @@
 chngcntr,   % Redefinition of counters
 tocbibind,  % Add bibliography to table of contents
 float,  % More control over float environments
+titling,% Change appearance of title information
+sectsty,% Change font used for section headings
 gitinfo2% Metadata from git
 }
 
@@ -55,8 +57,8 @@
 \newboolean{TEX4HT-HACKS}
 \ifx\HCode\undefined
 \RequirePackage{%
-mathptmx,   % Use Postscript fonts: Times ...
-helvet, % ... and Helvetica
+mathptmx,   % Use Postscript fonts: URW Nimbus Roman No9 L ...
+opensans,   % ... and Open Sans
 pdfpages% Insert whole PDF documents as separate pages
 }
 \setboolean{TEX4HT-HACKS}{false}
@@ -101,6 +103,18 @@
 % Redefine the titlepage environment not to reset the page number
 \renewenvironment{titlepage}{\newpage\thispagestyle{empty}}{\newpage}
 
+% Use sans serif font for title (titling.sty)
+\pretitle{\begin{center}\sffamily\bfseries\huge}
+\posttitle{\par\end{center}\vskip2.5em}
+\preauthor{\begin{center}\large\lineskip0.75em\begin{tabular}[t]{c}}
+\postauthor{\end{tabular}\par\end{center}\vskip2em}
+
+% Redefine fonts for section headings (sectsty.sty)
+\allsectionsfont{\sffamily}
+% Smaller chapter headings
+\chapternumberfont{\sffamily\LARGE} % default is \huge
+\chaptertitlefont{\sffamily\huge}   % ... and \Huge
+
 % Enumerate subsubsections and include them in the toc
 \setcounter{secnumdepth}{3}
 \setcounter{tocdepth}{3}



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

2024-12-11 Thread Ulrich Müller
commit: e8eaa166a519369a740f95b08461e3fc5aa20a46
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun Dec  1 11:28:53 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Dec  9 20:05:42 2024 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=e8eaa166

pms.cls: Fine-tune page breaking and float placement

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

 pms.cls | 9 +
 1 file changed, 9 insertions(+)

diff --git a/pms.cls b/pms.cls
index 571232f..006aed3 100644
--- a/pms.cls
+++ b/pms.cls
@@ -177,6 +177,15 @@
 \setlength\hfuzz{0.2pt}  % was 0.1pt
 \setlength\emergencystretch{1em} % was 0
 
+% Avoid widows and orphans
+\widowpenalty=500% was 150
+\clubpenalty=500 % was 150
+
+% Allow more floats on one page because we have many small tables
+\setcounter{topnumber}{5}% was 2
+\setcounter{bottomnumber}{2} % was 1
+\setcounter{totalnumber}{5}  % was 3
+
 % Don't add extra vertical space, to avoid underfull boxes. Only affects
 % two-sided layout, for one-sided it is already the default
 \raggedbottom



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

2024-12-11 Thread Ulrich Müller
commit: 8c058bbf28ad4c57c19b3986525bb6e961807535
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun Jun 16 19:18:57 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Jun 16 19:18:57 2024 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=8c058bbf

Makefile: Explicitly list LaTeX source files

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

 Makefile | 8 +++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/Makefile b/Makefile
index c882534..422dac9 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,10 @@
-LATEXFILES := $(wildcard *.tex) pms.cls
+LATEXFILES = pms.tex introduction.tex eapis.tex names.tex tree-layout.tex \
+   profiles.tex profile-variables.tex ebuild-format.tex ebuild-vars.tex \
+   dependencies.tex ebuild-functions.tex eclasses.tex \
+   ebuild-environment.tex ebuild-env-vars.tex commands.tex \
+   pkg-mgr-commands.tex merge.tex metadata-cache.tex glossary.tex \
+   appendices.tex eapi-differences.tex desk-reference.tex \
+   eapi-cheatsheet.tex pms.cls
 SOURCES = $(LATEXFILES) pms.bib Makefile
 COMMITINFO = gitHeadLocal.gin
 



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

2024-12-11 Thread Ulrich Müller
commit: daf6e2c58106e99835746e213b5f6910e874465f
Author: Ulrich Müller  gentoo  org>
AuthorDate: Fri Nov 29 16:02:56 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Dec  8 21:42:25 2024 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=daf6e2c5

EAPI 9: assert banned

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 3d5bb97..ddeb1e6 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -117,6 +117,9 @@ GNU \t{patch} version & \compactfeatureref{gnu-patch} &
 \t{hasq} & \compactfeatureref{banned-commands} &
 Yes & Yes & Banned & Banned \\
 
+\t{assert} & \compactfeatureref{banned-commands} &
+Yes & Yes & Yes & Banned \\
+
 Query command options & \compactfeatureref{pm-query-options} &
 \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} & \t{-b}, \t{-d}, \t{-r} & 
\t{-b}, \t{-d}, \t{-r} \\
 
@@ -359,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{assert} banned, \featureref{banned-commands}.
 \item Absolute symlinks no longer being rewritten, \featureref{symlink-rewrite}
 
 \end{compactitem}

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

2024-12-11 Thread Ulrich Müller
commit: 029ebfe20e51c0a08bd1c442511729306bf8956e
Author: Ulrich Müller  gentoo  org>
AuthorDate: Fri Nov 15 17:38:42 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Fri Nov 15 17:38:42 2024 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=029ebfe2

tree-layout.tex: Missing eapi is not taken from master repo

The wording on this was not clear: One the one hand we had "if no eapi
file is present, EAPI 0 shall be used", on the other hand "contents of
these files are to be taken from [...] the master repository".

Portage uses EAPI 0 if profiles/eapi is missing in a non-stand-alone
repository.

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

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

diff --git a/tree-layout.tex b/tree-layout.tex
index 19aed03..e0b414d 100644
--- a/tree-layout.tex
+++ b/tree-layout.tex
@@ -85,7 +85,7 @@ directory; a package manager must not attempt to use any 
repository whose profil
 requires an EAPI it does not support. If no \t{eapi} file is present, EAPI 0 
shall be used.
 
 If the repository is not intended to be stand-alone, the contents of these 
files are to be taken
-from or merged with the master repository as necessary.
+from or merged with the master repository as necessary; this does not apply to 
the \t{eapi} file.
 
 Other files not described by this specification may exist, but may not be 
relied upon. The package
 manager must ignore any files in this directory that it does not recognise.



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

2024-12-11 Thread Ulrich Müller
commit: 48050d55bd1075cd3ae416823012cdef823111a0
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sat Nov 30 08:13:45 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Nov 30 08:13:45 2024 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=48050d55

Consistent spelling of "upper-case" and "lower-case"

Closes: https://bugs.gentoo.org/945168
Reported-by: Sam James  gentoo.org>
Signed-off-by: Ulrich Müller  gentoo.org>

 ebuild-env-vars.tex  | 4 ++--
 names.tex| 2 +-
 pkg-mgr-commands.tex | 4 ++--
 tree-layout.tex  | 2 +-
 4 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index ecc20b6..c361422 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -392,7 +392,7 @@ For EAPIs listed in 
table~\ref{tab:profile-iuse-injection-table} as not supporti
 \begin{compactitem}
 \item All values in the calculated \t{IUSE} value.
 \item All possible values for the \t{ARCH} variable.
-\item All legal use flag names whose name starts with the lowercase equivalent 
of any value in
+\item All legal use flag names whose name starts with the lower-case 
equivalent of any value in
 the profile \t{USE_EXPAND} variable followed by an underscore.
 \end{compactitem}
 
@@ -409,7 +409,7 @@ are equal and contain the following values:
 \item All values for \t{\$\{lower_v\}_\$\{x\}}, where \t{\$\{x\}} is all 
values in the profile
 variable named \t{USE_EXPAND_VALUES_\$\{v\}}, where \t{\$\{v\}} is any 
value in the
 intersection of the profile \t{USE_EXPAND} and \t{USE_EXPAND_IMPLICIT} 
variables and
-\t{\$\{lower_v\}} is the lowercase equivalent of \t{\$\{v\}}.
+\t{\$\{lower_v\}} is the lower-case equivalent of \t{\$\{v\}}.
 \end{compactitem}
 
 The \t{USE} variable is set by the package manager. For each value in 
\t{IUSE_EFFECTIVE}, \t{USE}

diff --git a/names.tex b/names.tex
index 45289f7..fa7c51d 100644
--- a/names.tex
+++ b/names.tex
@@ -65,7 +65,7 @@ invalid according to the rules below.
 A version starts with the number part, which is in the form 
\t{[0-9]+(\textbackslash.[0-9]+)*}
 (an unsigned integer, followed by zero or more dot-prefixed unsigned integers).
 
-This may optionally be followed by one of \t{[a-z]} (a lowercase letter).
+This may optionally be followed by one of \t{[a-z]} (a lower-case letter).
 
 This may be followed by zero or more of the suffixes \t{_alpha}, \t{_beta}, 
\t{_pre}, \t{_rc}
 or \t{_p}, each of which may optionally be followed by an unsigned integer. 
Suffix and integer

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index baef7b8..6bd325e 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -1024,8 +1024,8 @@ For the purpose of version manipulation commands, the 
specification provides a m
 an arbitrary version string (not necessarily conforming to 
section~\ref{sec:version-spec}) into
 a series of version components and version separators.
 
-A version component consists either purely of digits (\t{[0-9]+}) or purely of 
uppercase and
-lowercase ASCII letters (\t{[A-Za-z]+}). A version separator is either a 
string of any other
+A version component consists either purely of digits (\t{[0-9]+}) or purely of 
upper- and
+lower-case ASCII letters (\t{[A-Za-z]+}). A version separator is either a 
string of any other
 characters (\t{[\textasciicircum A-Za-z0-9]+}), or it occurs at the transition 
between a sequence
 of digits and a sequence of letters, or vice versa. In the latter case, the 
version separator is
 an empty string.

diff --git a/tree-layout.tex b/tree-layout.tex
index e0b414d..b0dee0a 100644
--- a/tree-layout.tex
+++ b/tree-layout.tex
@@ -121,7 +121,7 @@ manager must ignore any files in this directory that it 
does not recognise.
 the packages to which they apply. The format is as described in 
section~\ref{sec:use.desc}.
 \item[desc/] This directory contains files analogous to \t{use.desc} for the 
various \t{USE_EXPAND}
 variables. Each file in it is named \t{.desc}, where 
\t{} is the variable
-name, in lowercase, whose possible values the file describes. The format 
of each file is as for
+name, in lower case, whose possible values the file describes. The format 
of each file is as for
 \t{use.desc}, described in section~\ref{sec:use.desc}. The \t{USE_EXPAND} 
name is \emph{not}
 included as a prefix here.
 \item[updates/] This directory is described in section~\ref{sec:updates-dir}.



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

2024-12-11 Thread Ulrich Müller
commit: dc3b51bf149f174aeed15860185aba8cce1728ff
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sat Jul  6 09:44:05 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Jul  7 08:18:37 2024 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=dc3b51bf

dependencies.tex: Clarify specification of the slot= operator

Reported-by: Jannik Glückert  gmail.com>
Signed-off-by: Ulrich Müller  gentoo.org>

 dependencies.tex | 15 ---
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/dependencies.tex b/dependencies.tex
index 47c96c3..c1f7d6a 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -349,15 +349,16 @@ the following operators:
 the slot and sub-slot of the best version installed as a build-time 
(\t{DEPEND}) dependency is
 available.
 \item[slot=] Indicates that only a specific slot value is acceptable, and 
otherwise behaves
-identically to the plain equals slot operator.
+identically to the \t{=} operator. The specified slot must not contain a 
sub-slot part.
 \end{description}
 
-To implement the equals slot operator, the package manager will need to store 
the slot/sub-slot
-pair of the best installed version of the matching package. This syntax is 
only for package manager
-use and must not be used by ebuilds. The package manager may do this by 
inserting the appropriate
-slot/sub-slot pair between the colon and equals sign when saving the package's 
dependencies. The
-sub-slot part must not be omitted here (when the SLOT variable omits the 
sub-slot part, the package
-is considered to have an implicit sub-slot which is equal to the regular slot).
+To implement the equals slot operators \t{=} and \i{slot}\t{=}, the package 
manager will need to
+store the slot/sub-slot pair of the best installed version of the matching 
package. This syntax is
+only for package manager use and must not be used by ebuilds. The package 
manager may do this by
+inserting the appropriate slot/sub-slot pair between the colon and equals sign 
when saving the
+package's dependencies. The sub-slot part must not be omitted here (when the 
\t{SLOT} variable
+omits the sub-slot part, the package is considered to have an implicit 
sub-slot which is equal to
+the regular slot).
 
 Whenever the equals slot operator is used in an enabled dependency group, the 
dependencies
 (\t{DEPEND}) must ensure that a matching package is installed at build time. 
It is invalid to use



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

2024-12-11 Thread Ulrich Müller
commit: 892a14d2bd788d6b4d1a87bc185d987088012949
Author: Ulrich Müller  gentoo  org>
AuthorDate: Tue Aug  3 16:32:47 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Dec  8 21:42:23 2024 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=892a14d2

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

2024-12-11 Thread Ulrich Müller
commit: b7f793f9c48d665633a6dab3bda5ffb84dc0ad3d
Author: Ulrich Müller  gentoo  org>
AuthorDate: Mon Sep  9 17:15:11 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Sep  9 23:40:19 2024 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=b7f793f9

pkg-mgr-commands.tex: Document *.z suffix in unpack

Portage has accepted the lowercase *.z and *.tar.z suffixes for
gzip-compressed files since version 2.0.24 in 2002:
https://gitweb.gentoo.org/archive/proj/portage-cvs.git/commit/?id=322d745eff81a5e647b70c3d55bee5dd17e08296

This won't make any difference for newer EAPIs (where unpack's suffix
matching is case-insensitive).

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

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

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index d98574d..baef7b8 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -1133,9 +1133,10 @@ has returned.
 relevant binaries are available:
 \begin{itemize}
 \item tar files (\t{*.tar}). Ebuilds must ensure that GNU tar is installed.
-\item gzip-compressed files (\t{*.gz, *.Z}). Ebuilds must ensure that GNU 
gzip is installed.
-\item gzip-compressed tar files (\t{*.tar.gz, *.tgz, *.tar.Z}). Ebuilds 
must ensure that
-GNU gzip and GNU tar are installed.
+\item gzip-compressed files (\t{*.gz, *.z, *.Z}). Ebuilds must ensure that 
GNU gzip is
+installed.
+\item gzip-compressed tar files (\t{*.tar.gz, *.tgz, *.tar.z, *.tar.Z}). 
Ebuilds must ensure
+that GNU gzip and GNU tar are installed.
 \item bzip2-compressed files (\t{*.bz2, *.bz}). Ebuilds must ensure that 
bzip2 is installed.
 \item bzip2-compressed tar files (\t{*.tar.bz2, *.tbz2, *.tar.bz, *.tbz}). 
Ebuilds must ensure
 that bzip2 and GNU tar are installed.



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

2024-12-11 Thread Ulrich Müller
commit: 6a00d730827c983e418c7d6d88d0b7db8a5c0035
Author: Ulrich Müller  gentoo  org>
AuthorDate: Fri Nov 29 16:06:26 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Dec  8 21:42:25 2024 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=6a00d730

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 ddeb1e6..171f9e5 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -132,6 +132,9 @@ Output commands use stdout & 
\compactfeatureref{output-no-stdout} &
 \t{die} in subshell & \compactfeatureref{subshell-die} &
 No & Yes & Yes & Yes \\
 
+\t{pipestatus} & \compactfeatureref{pipestatus} &
+No & No & No & Yes \\
+
 \t{econf -{}-datarootdir} & \compactfeatureref{econf-options} &
 No & No & Yes & Yes \\
 
@@ -363,6 +366,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \begin{compactitem}
 \item Different default EAPI for profiles, \featureref{profile-eapi-default}.
 \item \t{assert} banned, \featureref{banned-commands}.
+\item \t{pipestatus} support, \featureref{pipestatus}.
 \item Absolute symlinks no longer being rewritten, \featureref{symlink-rewrite}
 
 \end{compactitem}

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



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

2024-12-11 Thread Ulrich Müller
commit: 7583ab7263dd6c229a16bc77d0a561051a08d142
Author: Ulrich Müller  gentoo  org>
AuthorDate: Mon Feb 21 18:32:43 2022 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Dec  8 21:42:24 2024 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=7583ab72

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



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

2024-12-11 Thread Ulrich Müller
commit: 05166bfe6a9bbb1d60545a04ffb726f2a8cb047b
Author: Ulrich Müller  gentoo  org>
AuthorDate: Tue Nov 12 19:15:48 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Tue Nov 12 19:15:48 2024 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=05166bfe

Cheat sheet: Expand acronym in abstract

Delete commented-out text.

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

 eapi-cheatsheet.tex | 9 +++--
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/eapi-cheatsheet.tex b/eapi-cheatsheet.tex
index 2e2b757..d719c77 100644
--- a/eapi-cheatsheet.tex
+++ b/eapi-cheatsheet.tex
@@ -68,12 +68,9 @@
 
 Official Gentoo EAPIs are consecutively numbered integers (0, 1,
 2, \dots).  Except where otherwise noted, an EAPI is the same as
-the previous EAPI\@.  All labels refer to the PMS document itself,
-built from the same checkout as this overview.
-
-% Please report mistakes in or enhancements to this document via the
-% Gentoo bug tracking system\footnote{\url{https://bugs.gentoo.org/}}
-% to the original author or the PMS team.
+the previous EAPI\@.  All labels refer to the Package Manager
+Specification itself, built from the same checkout as this
+document.
 
 This work is released under the Creative Commons
 Attribution-ShareAlike 4.0 International licence.%



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

2024-12-11 Thread Ulrich Müller
commit: 3a9c27687b1ef88ad6c0cbf7accb3c008905ce5f
Author: Ulrich Müller  gentoo  org>
AuthorDate: Thu Jun 20 18:16:12 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Dec  8 21:42:24 2024 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=3a9c2768

EAPI 9 no longer rewrites absolute symlinks

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

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index f6aafe7..3d5bb97 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -171,6 +171,9 @@ Controllable stripping & \compactfeatureref{dostrip} &
 \t{unpack} support for \t{rar} & \compactfeatureref{unpack-extensions} &
 Yes & Yes & No & No \\
 
+Absolute symlink rewriting & \compactfeatureref{symlink-rewrite} &
+Yes & Yes & Yes & No \\
+
 \end{longtable}
 
 \chapter{Differences between EAPIs}
@@ -356,6 +359,8 @@ EAPI 9 is EAPI 8 with the following changes:
 
 \begin{compactitem}
 \item Different default EAPI for profiles, \featureref{profile-eapi-default}.
+\item Absolute symlinks no longer being rewritten, \featureref{symlink-rewrite}
+
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/merge.tex b/merge.tex
index 27b0ba8..e51c1b8 100644
--- a/merge.tex
+++ b/merge.tex
@@ -138,8 +138,23 @@ Ebuilds must not attempt to merge a symlink on top of a 
directory.
 
 \subsection{Rewriting}
 
-Any absolute symlink whose link starts with \t{D} must be rewritten with the 
leading \t{D} removed.
-The package manager should issue a notice when doing this.
+\featurelabel{symlink-rewrite} In EAPIs listed in 
table~\ref{tab:symlink-rewrite} as rewriting
+symlinks, any absolute symlink whose link starts with \t{D} must be rewritten 
with the leading
+\t{D} removed. The package manager should issue a notice when encountering 
such a symlink.
+
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{Rewriting of absolute symlinks}
+\label{tab:symlink-rewrite}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Rewrite symlinks?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7, 8 & Yes \\
+  9 & No  \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
 
 \section{Hard links}
 



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

2024-12-01 Thread Ulrich Müller
commit: a13bce23a5878c83796cf776df59b166c09f8815
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun Dec  1 11:28:53 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Dec  1 11:28:53 2024 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=a13bce23

pms.cls: Avoid some poor page breaks

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

 pms.cls | 4 
 1 file changed, 4 insertions(+)

diff --git a/pms.cls b/pms.cls
index c8c6101..8ef4695 100644
--- a/pms.cls
+++ b/pms.cls
@@ -163,6 +163,10 @@
 \setlength\hfuzz{0.2pt}  % was 0.1pt
 \setlength\emergencystretch{1em} % was 0
 
+% Avoid widows and orphans
+\widowpenalty=500% was 150
+\clubpenalty=500 % was 150
+
 % Don't add extra vertical space, to avoid underfull boxes. Only affects
 % two-sided layout, for one-sided it is already the default
 \raggedbottom



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

2024-11-29 Thread Ulrich Müller
commit: 286f95a9661bff8086450fe06d4fee3a45053a8c
Author: Ulrich Müller  gentoo  org>
AuthorDate: Fri Nov 29 16:06:26 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Fri Nov 29 16:06:26 2024 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=286f95a9

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 ddeb1e6..171f9e5 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -132,6 +132,9 @@ Output commands use stdout & 
\compactfeatureref{output-no-stdout} &
 \t{die} in subshell & \compactfeatureref{subshell-die} &
 No & Yes & Yes & Yes \\
 
+\t{pipestatus} & \compactfeatureref{pipestatus} &
+No & No & No & Yes \\
+
 \t{econf -{}-datarootdir} & \compactfeatureref{econf-options} &
 No & No & Yes & Yes \\
 
@@ -363,6 +366,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \begin{compactitem}
 \item Different default EAPI for profiles, \featureref{profile-eapi-default}.
 \item \t{assert} banned, \featureref{banned-commands}.
+\item \t{pipestatus} support, \featureref{pipestatus}.
 \item Absolute symlinks no longer being rewritten, \featureref{symlink-rewrite}
 
 \end{compactitem}

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



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

2024-11-29 Thread Ulrich Müller
commit: 42da74a0e2b5f0a93acace279fcca3c6f5487dc6
Author: Ulrich Müller  gentoo  org>
AuthorDate: Fri Nov 29 16:02:17 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Fri Nov 29 16:02:17 2024 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=42da74a0

pkg-mgr-commands.tex: More precise wording for assert

The pipe status variable is an array, which consists of array elements.
The term "components" is used with a different meaning elsewhere.

Update the command properties table. These apply only to the die
command, and assert inherits them ("calls die, passing any parameters
to it").

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

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

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index ad2493e..4ab8fdf 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -199,20 +199,18 @@ completing. Ebuilds must not run any of these commands 
once the current phase fu
 \featurelabel{subshell-die} In EAPIs listed in 
table~\ref{tab:die-properties} as not providing
 subshell support, \t{die} is \emph{not} guaranteed to work correctly if 
called from a subshell
 environment.
-\item[assert] Checks the value of the shell's pipe status variable, and if any 
component is non-zero
-(indicating failure), calls \t{die}, passing any parameters to it.
+\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.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{9}
-\begin{centertable}{Properties of \t{die} and \t{assert} commands in EAPIs}
+\begin{centertable}{Properties of \t{die} command in EAPIs}
 \label{tab:die-properties}
 \begin{tabular}{lll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{2}{c}{\textbf{\t{die} and \t{assert}}} \\
-  &
-  \multicolumn{1}{c}{\textbf{support \t{-n}?}} &
-  \multicolumn{1}{c}{\textbf{work in subshell?}} \\
+  \multicolumn{1}{c}{\textbf{Supports \t{die -n}?}} &
+  \multicolumn{1}{c}{\textbf{\t{die} works in subshell?}} \\
   \midrule
   0, 1, 2, 3, 4, 5  & No  & No  \\
   6 & Yes & No  \\



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

2024-11-29 Thread Ulrich Müller
commit: 6909cdc8203d5ad002b138885494b50a9e1e77a7
Author: Ulrich Müller  gentoo  org>
AuthorDate: Fri Nov 29 16:02:56 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Fri Nov 29 16:02:56 2024 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=6909cdc8

EAPI 9: assert banned

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 3d5bb97..ddeb1e6 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -117,6 +117,9 @@ GNU \t{patch} version & \compactfeatureref{gnu-patch} &
 \t{hasq} & \compactfeatureref{banned-commands} &
 Yes & Yes & Banned & Banned \\
 
+\t{assert} & \compactfeatureref{banned-commands} &
+Yes & Yes & Yes & Banned \\
+
 Query command options & \compactfeatureref{pm-query-options} &
 \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} & \t{-b}, \t{-d}, \t{-r} & 
\t{-b}, \t{-d}, \t{-r} \\
 
@@ -359,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{assert} banned, \featureref{banned-commands}.
 \item Absolute symlinks no longer being rewritten, \featureref{symlink-rewrite}
 
 \end{compactitem}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 4ab8fdf..799d305 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: /

2024-06-24 Thread Ulrich Müller
commit: a331bd4241cecfe6b124408f345979f126d519e7
Author: Ulrich Müller  gentoo  org>
AuthorDate: Thu Jun 20 18:16:12 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Thu Jun 20 18:16:12 2024 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=a331bd42

EAPI 9 no longer rewrites absolute symlinks

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

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index f6aafe7..3d5bb97 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -171,6 +171,9 @@ Controllable stripping & \compactfeatureref{dostrip} &
 \t{unpack} support for \t{rar} & \compactfeatureref{unpack-extensions} &
 Yes & Yes & No & No \\
 
+Absolute symlink rewriting & \compactfeatureref{symlink-rewrite} &
+Yes & Yes & Yes & No \\
+
 \end{longtable}
 
 \chapter{Differences between EAPIs}
@@ -356,6 +359,8 @@ EAPI 9 is EAPI 8 with the following changes:
 
 \begin{compactitem}
 \item Different default EAPI for profiles, \featureref{profile-eapi-default}.
+\item Absolute symlinks no longer being rewritten, \featureref{symlink-rewrite}
+
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/merge.tex b/merge.tex
index 27b0ba8..e51c1b8 100644
--- a/merge.tex
+++ b/merge.tex
@@ -138,8 +138,23 @@ Ebuilds must not attempt to merge a symlink on top of a 
directory.
 
 \subsection{Rewriting}
 
-Any absolute symlink whose link starts with \t{D} must be rewritten with the 
leading \t{D} removed.
-The package manager should issue a notice when doing this.
+\featurelabel{symlink-rewrite} In EAPIs listed in 
table~\ref{tab:symlink-rewrite} as rewriting
+symlinks, any absolute symlink whose link starts with \t{D} must be rewritten 
with the leading
+\t{D} removed. The package manager should issue a notice when encountering 
such a symlink.
+
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{Rewriting of absolute symlinks}
+\label{tab:symlink-rewrite}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Rewrite symlinks?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7, 8 & Yes \\
+  9 & No  \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
 
 \section{Hard links}
 



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

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

Use sentence case throughout

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

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

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

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

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

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

diff --git a/dependencies.tex b/dependencies.tex
index 6c09714..47c96c3 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -1,7 +1,7 @@
 \chapter{Dependencies}
 \label{ch:dependencies}
 
-\section{Dependency Classes}
+\section{Dependency classes}
 \label{sec:dependency-classes}
 
 \begin{centertable}{Dependency classes required to be satisfied for a 
particular phase function}
@@ -111,7 +111,7 @@ interfaces related to the dependency classes.
 In addition, \t{HOMEPAGE}, \t{SRC_URI}, \t{LICENSE}, \t{REQUIRED_USE}, 
\t{PROPERTIES} and
 \t{RESTRICT} use dependency-style specifi

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

2024-06-02 Thread Ulrich Müller
commit: d773b8caeb11cfc3d37b0463eeed4a8a18ffb8d7
Author: Ulrich Müller  gentoo  org>
AuthorDate: Tue Aug  3 16:32:47 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Jun  2 09:56:50 2024 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=d773b8ca

Add an EAPI 9 identical to EAPI 8

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

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

diff --git a/commands.tex b/commands.tex
index 2c9e594..81fd204 100644
--- a/commands.tex
+++ b/commands.tex
@@ -33,7 +33,7 @@ The following commands must always be available in the ebuild 
environment:
 table~\ref{tab:system-commands-table} as requiring GNU find.
 \end{compactitem}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{System commands for EAPIs}
 \label{tab:system-commands-table}
 \begin{tabular}{lll}
@@ -44,7 +44,7 @@ The following commands must always be available in the ebuild 
environment:
   \midrule
   0, 1, 2, 3, 4 & Undefined & Any \\
   5, 6  & Yes   & Any \\
-  7, 8  & Yes   & 2.7 \\
+  7, 8, 9   & Yes   & 2.7 \\
   \bottomrule
 \end{tabular}
 \end{centertable}

diff --git a/dependencies.tex b/dependencies.tex
index 47c96c3..24628ef 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -88,7 +88,7 @@ with the native build system (\t{CBUILD}). Ebuilds are 
allowed to call them in \
 \t{pkg_postinst}. Ebuilds may also call them in \t{pkg_prerm} and 
\t{pkg_postrm} but must not rely
 on them being available.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting additional dependency types}
 \label{tab:depend-table}
 \begin{tabular}{lll}
@@ -99,7 +99,7 @@ on them being available.
   \midrule
   0, 1, 2, 3, 4, 5, 6 & No  & No  \\
   7   & Yes & No  \\
-  8   & Yes & Yes \\
+  8, 9& Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -155,7 +155,7 @@ be surrounded on both sides by whitespace, except at the 
start and end of the st
 
 In particular, note that whitespace is not optional.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{REQUIRED_USE ??}\ groups}
 \label{tab:at-most-one-of-table}
 \begin{tabular}{ll}
@@ -164,7 +164,7 @@ In particular, note that whitespace is not optional.
   \multicolumn{1}{c}{\textbf{Supports \t{REQUIRED_USE ??}\ groups?}} \\
   \midrule
   0, 1, 2, 3, 4 & No  \\
-  5, 6, 7, 8& Yes \\
+  5, 6, 7, 8, 9 & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -204,7 +204,7 @@ In an exactly-one-of group, exactly one immediate child 
element must be matched.
 In EAPIs specified in table~\ref{tab:empty-dep-groups}, an empty 
exactly-one-of group counts as
 being matched.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Matching of empty dependency groups in EAPIs}
 \label{tab:empty-dep-groups}
 \begin{tabular}{ll}
@@ -214,7 +214,7 @@ being matched.
 are matched?}} \\
   \midrule
   0, 1, 2, 3, 4, 5, 6 & Yes \\
-  7, 8& No  \\
+  7, 8, 9 & No  \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -250,7 +250,7 @@ manager must warn or error if this feature is used with an 
EAPI not supporting u
 
 \note{Order is important. The slot restriction must come before use 
dependencies.}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Support for \t{SLOT} dependencies and sub-slots in EAPIs}
 \label{tab:slot-deps-table}
 \begin{tabular}{lll}
@@ -261,12 +261,12 @@ manager must warn or error if this feature is used with 
an EAPI not supporting u
   \midrule
   0 & No & No  \\
   1, 2, 3, 4& Named only & No  \\
-  5, 6, 7, 8& Named and operator & Yes \\
+  5, 6, 7, 8, 9 & Named and operator & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{USE} dependencies}
 \label{tab:use-deps-table}
 \begin{tabular}{ll}
@@ -276,7 +276,7 @@ manager must warn or error if this feature is used with an 

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

2024-06-02 Thread Ulrich Müller
commit: e044fe24e90de258483a59130c1b56de21082bc6
Author: Ulrich Müller  gentoo  org>
AuthorDate: Tue Apr  2 16:53:19 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Tue Apr  2 16:53:19 2024 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=e044fe24

ebuild-env-vars.tex: Be more specific about REPLACING_VERSIONS phases

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

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

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 0dcfd24..06d37d9 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -255,12 +255,13 @@ inconsistent variable.
 package, and \t{buildonly} if building a binary package without installing 
it. Only for EAPIs
 listed in table~\ref{tab:added-env-vars-table} as supporting 
\t{MERGE_TYPE}. \\
 \t{REPLACING_VERSIONS} &
-\t{pkg_*} (see text) &
+\t{pkg_preinst}, \t{pkg_postinst} (\t{pkg_pretend}, \t{pkg_setup}) &
 Yes &
 A list of all versions of this package (including revision, if specified), 
whitespace separated
 with no leading or trailing whitespace, that are being replaced 
(uninstalled or overwritten)
-as a result of this install. See section~\ref{sec:replacing-versions}. 
Only for EAPIs listed
-in table~\ref{tab:added-env-vars-table} as supporting 
\t{REPLACING_VERSIONS}. \\
+as a result of this install. See section~\ref{sec:replacing-versions}, 
especially for the phases
+in which the variable is legal. Only for EAPIs listed in 
table~\ref{tab:added-env-vars-table}
+as supporting \t{REPLACING_VERSIONS}. \\
 \t{REPLACED_BY_VERSION} &
 \t{pkg_prerm}, \t{pkg_postrm} &
 Yes &



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

2024-06-02 Thread Ulrich Müller
commit: 76b3958184fc93fec5ac15c67288de21475ff592
Author: Ulrich Müller  gentoo  org>
AuthorDate: Mon Feb 21 18:32:43 2022 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Jun  2 09:56:51 2024 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=76b39581

EAPI 9 profile EAPI defaults to top-level

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

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

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

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



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

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

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

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

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

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

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

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

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



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

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

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

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

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

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



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

2024-06-02 Thread Ulrich Müller
commit: ea5b43c5e8b666124592fae8e0697f0d990ab1f4
Author: Ulrich Müller  gentoo  org>
AuthorDate: Mon May 13 20:51:12 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon May 13 20:51:12 2024 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=ea5b43c5

pms.cls: Redefine headings for list of tables etc.

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

 pms.cls | 9 -
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/pms.cls b/pms.cls
index d9907b7..0cf630b 100644
--- a/pms.cls
+++ b/pms.cls
@@ -128,11 +128,18 @@
 % Define a new column type P for tables, like p but with ragged-right text
 \newcolumntype{P}[1]{>{\setlength\rightskip{0pt plus 1fil}}p{#1}}
 
+% Redefine headings for list of tables/figures/algorithms
+\renewcommand{\listtablename}{Tables}
+\renewcommand{\listfigurename}{Figures}
+\g@addto@macro\@documentclasshook{
+\renewcommand{\listalgorithmname}{Algorithms}
+}
+
 % Define a float environment for listings
 \floatstyle{ruled}
 \newfloat{listing}{tbp}{lol}[chapter]
 \floatname{listing}{Listing}
-\newcommand{\listoflistings}{\listof{listing}{List of Listings}}
+\newcommand{\listoflistings}{\listof{listing}{Listings}}
 
 % Prevent page break before a list
 \newcommand{\nobreakpar}{\par\nobreak\@afterheading}



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

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

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

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

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

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

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



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

2024-06-02 Thread Ulrich Müller
commit: 7674760dc5ac6d2a1800203f8b257665bc12b9db
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sat Jan 27 09:04:35 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Jan 27 09:04:35 2024 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=7674760d

pms.tex: Update copyright years

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

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

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



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

2024-06-02 Thread Ulrich Müller
commit: ef9be7c2a696a476514de29e2f88df82f37f2ceb
Author: Ulrich Müller  gentoo  org>
AuthorDate: Thu Feb 22 17:19:40 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Thu Feb 22 17:19:40 2024 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=ef9be7c2

ebuild-env-vars.tex: EBUILD_PHASE{,_FUNC} are valid only in phases

Portage didn't ever set (or unset) these variables to a special value
when sourcing the ebuild, so obviously ebuilds cannot rely on this.
Restrict their validity to actual phases and make global scope
behaviour unspecified.

The previous wording was introduced with commit 58d3bc0.

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

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

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index aae5413..0dcfd24 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -224,23 +224,23 @@ inconsistent variable.
 A whitespace-delimited list of all active USE flags for this ebuild. See
 section~\ref{sec:use-iuse-handling} for details. \\
 \t{EBUILD_PHASE} &
-All &
+\t{src_*}, \t{pkg_*} &
 No &
 Takes one of the values \t{config}, \t{setup}, \t{nofetch}, \t{unpack}, 
\t{prepare},
 \t{configure}, \t{compile}, \t{test}, \t{install}, \t{preinst}, 
\t{postinst}, \t{prerm},
 \t{postrm}, \t{info}, \t{pretend} according to the top level ebuild 
function that was executed
-by the package manager. May be unset or any single word that is not any of 
the above when the
-ebuild is being sourced for other (e.\,g.\ metadata or QA) purposes. \\
+by the package manager. Behaviour is unspecified when the ebuild is being 
sourced for other
+(e.\,g.\ metadata or QA) purposes. \\
 \t{EBUILD_PHASE_FUNC} &
-All &
+\t{src_*}, \t{pkg_*} &
 No &
 \featurelabel{ebuild-phase-func} Takes one of the values \t{pkg_config}, 
\t{pkg_setup},
 \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure}, 
\t{src_compile},
 \t{src_test}, \t{src_install}, \t{pkg_preinst}, \t{pkg_postinst}, 
\t{pkg_prerm},
 \t{pkg_postrm}, \t{pkg_info}, \t{pkg_pretend} according to the top level 
ebuild function that
-was executed by the package manager. May be unset or any single word that 
is not any of the
-above when the ebuild is being sourced for other (e.\,g.\ metadata or QA) 
purposes. Only for
-EAPIs listed in table~\ref{tab:added-env-vars-table} as supporting 
\t{EBUILD_PHASE_FUNC}. \\
+was executed by the package manager. Behaviour is unspecified when the 
ebuild is being sourced
+for other (e.\,g.\ metadata or QA) purposes. Only for EAPIs listed in
+table~\ref{tab:added-env-vars-table} as supporting \t{EBUILD_PHASE_FUNC}. 
\\
 \t{KV} &
 All &
 Yes &



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

2024-06-02 Thread Ulrich Müller
commit: 1a669f3ce2ac6b6cf4c96be16dfea0b5621a938d
Author: Michał Górny  gentoo  org>
AuthorDate: Wed Feb 21 15:45:01 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Mar  3 17:29:40 2024 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=1a669f3c

ebuild-vars.tex: Add "test_privileged" to valid "PROPERTIES"

Add "test_privileged" to the values of "PROPERTIES", as introduced
in Portage commit 997058a825a340813532bef77a34425cf4a88eb2 (to be
included in 3.0.62).  This is akin to "test_network", used to indicate
that the test suite needs superuser privileges.

Bug: https://bugs.gentoo.org/924585
Signed-off-by: Michał Górny  gentoo.org>
Signed-off-by: Ulrich Müller  gentoo.org>

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

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index 5f3f583..79fa96f 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -239,6 +239,8 @@ The following tokens are permitted inside \t{PROPERTIES}:
 installed.
 \item[test_network] The package manager may run tests that require an internet 
connection, even if
 the ebuild has \t{RESTRICT=test}.
+\item[test_privileged] The package manager may run tests that require 
superuser privileges, even
+if the ebuild has \t{RESTRICT=test}.
 \end{description}
 
 Package managers may recognise other tokens. Ebuilds may not rely upon any 
token being supported.



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

2024-06-02 Thread Ulrich Müller
commit: 4d3c1a3d1275a76f41c0c7c50ec11d1f8954e2fb
Author: Ulrich Müller  gentoo  org>
AuthorDate: Thu Feb 22 17:12:22 2024 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Thu Feb 22 17:12:22 2024 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=4d3c1a3d

tree-layout.tex: Plural use of "data" is preferred in BE

https://digitalblog.ons.gov.uk/2016/12/08/data-is-versus-data-are/

This also fixes an "underfull \hbox" error.

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

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

diff --git a/tree-layout.tex b/tree-layout.tex
index 61f70a2..d286307 100644
--- a/tree-layout.tex
+++ b/tree-layout.tex
@@ -265,7 +265,7 @@ directory, support files needed by these eclasses.
 \section{The Metadata Directory}
 \label{sec:metadata-dir}
 
-The \t{metadata} directory contains various repository-level metadata that is 
not contained in
+The \t{metadata} directory contains various repository-level metadata that are 
not contained in
 \t{profiles/}. All contents are optional. In this standard only the \t{cache} 
subdirectory is
 described; other contents are optional but may include security advisories, 
DTD files for the
 various XML files used in the repository, and repository timestamps.



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

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

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

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

Update the entry for BROOT accordingly.

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

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

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



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

2024-06-02 Thread Ulrich Müller
commit: ea32ea927dad915bd50e0dcf976379b8470eb4d7
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun Aug  6 09:52:14 2023 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Aug  7 17:08:16 2023 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=ea32ea92

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

Restrict the previous change to EAPIs that actually support IDEPEND.

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

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

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



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

2024-06-02 Thread Ulrich Müller
commit: 658ead31edffc3bf431c5840830a357e3fe555da
Author: Ulrich Müller  gentoo  org>
AuthorDate: Fri Dec 29 11:54:18 2023 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Fri Dec 29 12:20:21 2023 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=658ead31

ebuild-env-vars.tex: Clarify that D is not valid in pkg_postinst

D in pkg_* phases was first mentioned in SVN r74 (commit f627e46102c6)
as a variable specific to the pkg_preinst phase function (replacing
IMAGE). pkg_postinst was added in r88 (commit 3da3ee561f1a), but this
was reverted in r89 (commit 65c466317718) "D in pkg_postinst == bad".

pkg_postinst reappeared when the env vars section was converted to
a table in commit 58d3bc0e8301.

According to chapter 13 "Merging and Unmerging", the method used to
perform the merge is not specified, and merging a regular file or
a directory may alter or remove its source under D. Therefore, trying
to access any file in D during the postinst phase is an error.

The scope of ED follows that of D.

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

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

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 5fe72dc..aae5413 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -192,14 +192,13 @@ inconsistent variable.
 The presence of a trailing slash is EAPI dependent as listed in 
table~\ref{tab:trailing-slash}.
 \\
 \t{D} (continued) &
-\t{pkg_preinst}, \t{pkg_postinst} &
-Yes\footnote{Consistent across \t{pkg_preinst} and \t{pkg_postinst}, but 
may not necessarily
-have the same value that it had in the \t{src_*} phases.} &
-Contains the full path to the image that is about to be or has just been 
merged.
+\t{pkg_preinst} &
+No\footnote{May not necessarily have the same value that it had in the 
\t{src_*} phases.} &
+Contains the full path to the image directory of the package about to be 
merged.
 The presence of a trailing slash is EAPI dependent as listed in 
table~\ref{tab:trailing-slash}.
 \\
 \t{ED} &
-\t{src_*}, \t{pkg_preinst}, \t{pkg_postinst} &
+\t{src_*}, \t{pkg_preinst} &
 See \t{D} &
 Contains the concatenation of the paths in the \t{D} and \t{EPREFIX} 
variables,
 for convenience. See also the \t{EPREFIX} variable. Only for EAPIs listed 
in



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

2024-06-02 Thread Ulrich Müller
commit: 07dde903c0f2feeb9f4aa46273436dc992b18913
Author: Ulrich Müller  gentoo  org>
AuthorDate: Thu Aug  3 16:16:07 2023 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Aug  6 11:09:41 2023 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=07dde903

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

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

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

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



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

2024-06-02 Thread Ulrich Müller
commit: f336f16ab8ab80d77cfb626eb2935eacda8bb596
Author: Ulrich Müller  gentoo  org>
AuthorDate: Thu Aug  3 16:22:33 2023 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Aug  7 17:08:16 2023 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=f336f16a

ebuild-env-vars.tex: Variables may not be meaningful in global scope

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

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

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 6046e1f..5fe72dc 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -2,8 +2,9 @@
 \label{sec:ebuild-env-vars}
 
 The package manager must define the following environment variables. Not all 
variables are
-meaningful in all phases; variables that are not meaningful in a given phase 
may be unset or set to
-any value. Ebuilds must not attempt to modify any of these variables, unless 
otherwise specified.
+universally meaningful; variables that are not meaningful in a given phase or 
in global scope may
+be unset or set to any value. Ebuilds must not attempt to modify any of these 
variables, unless
+otherwise specified.
 
 Because of their special meanings, these variables may not be preserved 
consistently across all
 phases as would normally happen due to environment saving (see 
section~\ref{sec:ebuild-env-state}).



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

2024-06-02 Thread Ulrich Müller
commit: aecb51e70f8546fd7f55144f9035ca982ab6fae1
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun Dec 24 13:05:52 2023 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Dec 24 13:05:52 2023 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=aecb51e7

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

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

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

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

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

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



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

2024-06-02 Thread Ulrich Müller
commit: 86bdfe73f488081e6abc9397693e35b400cfc6b6
Author: Ulrich Müller  gentoo  org>
AuthorDate: Thu Aug  3 16:12:16 2023 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Aug  6 11:09:40 2023 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=86bdfe73

Reformat the footnotes in the env variables longtable

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

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

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

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



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

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

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

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

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

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

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



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

2024-06-02 Thread Ulrich Müller
commit: 8db624245bc7ac34712017a70c056abe9d4a60cf
Author: Ulrich Müller  gentoo  org>
AuthorDate: Mon May 29 13:07:58 2023 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon May 29 13:07:58 2023 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=8db62424

pms.bib: Use @techreport entry type for GLEPs

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

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

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

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

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

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



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

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

EAPI 9 profile EAPI defaults to top-level

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

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

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

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



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

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

Add an EAPI 9 identical to EAPI 8

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

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

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

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

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

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

Add an EAPI 9 identical to EAPI 8

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

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

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

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

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

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

EAPI 9 profile EAPI defaults to top-level

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

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

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

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



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

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

EAPI feature table: Don't use a landscape table

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

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

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 225c2b6..b20693a 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -1,39 +1,24 @@
 \chapter{Feature Availability by EAPI}
 
 \note{This chapter is informative and for convenience only. Refer to the main 
text for specifics.
-For lack of space, EAPIs 0, 1, 2, 3, and~4 have been consolidated into a 
single column in the table
-below; entries marked with an asterisk differ between these EAPIs. See the 
2012-09-20 edition
-of this document for a complete table of previous EAPIs.}
-% 2012-09-20 (EAPI 5) edition has a table of EAPIs 0 to 5
+For lack of space, EAPIs 0 to~5 have been omitted from the table below, as 
well as items that would
+have identical entries for all listed EAPIs.}
 
 \ChangeWhenAddingAnEAPI{8}
-\begin{landscape}
-\begin{longtable}{llP{7.5em}P{7.5em}P{7.5em}P{7.5em}P{7.5em}}
+\begin{longtable}{@{}l@{}}
 \caption{Features in EAPIs}\\
 \toprule
 \multicolumn{1}{c}{\textbf{Feature}} &
-\multicolumn{1}{c}{\textbf{Reference}} &
-\multicolumn{5}{c}{\textbf{EAPIs}} \\
-\multicolumn{1}{c}{} &
-\multicolumn{1}{c}{} &
-\multicolumn{1}{c}{0, 1, 2, 3, 4} &
-\multicolumn{1}{c}{5} &
-\multicolumn{1}{c}{6} &
-\multicolumn{1}{c}{7} &
-\multicolumn{1}{c}{8} \\
+\multicolumn{1}{c}{\textbf{Ref.}} &
+\multicolumn{3}{c}{\textbf{EAPIs}} \\
+& & 6 & 7 & 8 \\
 \midrule
 \endfirsthead
 \midrule
 \multicolumn{1}{c}{\textbf{Feature}} &
-\multicolumn{1}{c}{\textbf{Reference}} &
-\multicolumn{5}{c}{\textbf{EAPIs}} \\
-\multicolumn{1}{c}{} &
-\multicolumn{1}{c}{} &
-\multicolumn{1}{c}{0, 1, 2, 3, 4} &
-\multicolumn{1}{c}{5} &
-\multicolumn{1}{c}{6} &
-\multicolumn{1}{c}{7} &
-\multicolumn{1}{c}{8} \\
+\multicolumn{1}{c}{\textbf{Ref.}} &
+\multicolumn{3}{c}{\textbf{EAPIs}} \\
+& & 6 & 7 & 8 \\
 \midrule
 \endhead
 \midrule
@@ -42,334 +27,148 @@ of this document for a complete table of previous EAPIs.}
 \endlastfoot
 
 \t{package.mask} directory & \compactfeatureref{package-mask-dir} &
-No & No & No & Yes & Yes \\
+No & Yes & Yes \\
 
 Less strict filenames in \t{updates} & \compactfeatureref{updates-filenames} &
-No & No & No & No & Yes \\
+No & No & Yes \\
 
 Profile files as directories & \compactfeatureref{profile-file-dirs} &
-No & No & No & Yes & Yes \\
+No & Yes & Yes \\
 
 \t{package.provided} & \compactfeatureref{package-provided} &
-Optional & Optional & Optional & No & No \\
-
-Stable use masking/forcing & \compactfeatureref{stablemask} &
-No & Yes & Yes & Yes & Yes \\
+Optional & No & No \\
 
 Bash version & \compactfeatureref{bash-version} &
-3.2 & 3.2 & 4.2 & 4.2 & 5.0 \\
-
-\t{failglob} in global scope & \compactfeatureref{failglob} &
-No & No & Yes & Yes & Yes \\
-
-\t{IUSE} defaults & \compactfeatureref{iuse-defaults} &
-* & Yes & Yes & Yes & Yes \\
-
-\t{REQUIRED_USE} & \compactfeatureref{required-use} &
-* & Yes & Yes & Yes & Yes \\
-
-\t{PROPERTIES} & \compactfeatureref{properties} &
-* & Yes & Yes & Yes & Yes \\
-
-\t{SRC_URI} arrows & \compactfeatureref{src-uri-arrows} &
-* & Yes & Yes & Yes & Yes \\
+4.2 & 4.2 & 5.0 \\
 
 Selective URI restrictions & \compactfeatureref{uri-restrict} &
-No & No & No & No & Yes \\
-
-\t{RDEPEND=DEPEND} & \compactfeatureref{rdepend-depend} &
-* & No & No & No & No \\
-
-\t{DEFINED_PHASES} & \compactfeatureref{defined-phases} &
-* & Yes & Yes & Yes & Yes \\
+No & No & Yes \\
 
 \t{BDEPEND} & \compactfeatureref{bdepend} &
-No & No & No & Yes & Yes \\
+No & Yes & Yes \\
 
 \t{IDEPEND} & \compactfeatureref{idepend} &
-No & No & No & No & Yes \\
-
-\t{??\ ( )} groups & \compactfeatureref{at-most-one-of} &
-No & Yes & Yes & Yes & Yes \\
+No & No & Yes \\
 
 Empty \t{||}, \t{\textasciicircum\textasciicircum} groups match &
 \compactfeatureref{empty-dep-groups} &
-Yes & Yes & Yes & No & No \\
-
-Slot dependencies & \compactfeatureref{slot-deps} &
-* & Named and Operator & Named and Operator & Named and Operator & Named 
and Operator \\
-
-Sub-slots & \compactfeatureref{sub-slot} &
-No & Yes & Yes & Yes & Yes \\
-
-Use dependencies & \compactfeatureref{use-deps} &
-* & 4-style & 4-style & 4-style & 4-style \\
-
-\t{!}\ blockers & \compactfeatureref{bang-strength} &
-* & Weak & Weak & Weak & Weak \\
-
-\t{!!}\ blockers & \compactfeatur

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

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

EAPI 9 profile parent files can contain comments

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

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

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

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



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

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

EAPI 9: econf matches configure --help output better

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

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

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

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



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

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

EAPI 9: econf matches configure --help output better

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

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

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

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



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

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

EAPI 9 profile EAPI defaults to top-level

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

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

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

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



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

2023-02-26 Thread Ulrich Müller
commit: 7e3dc6f383121e6215a04d20c3317e1592a869a0
Author: Ulrich Müller  gentoo  org>
AuthorDate: Mon Jan  9 18:15:05 2023 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Jan  9 18:15:05 2023 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=7e3dc6f3

pms.tex: Update copyright years

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

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

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



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

2023-02-26 Thread Ulrich Müller
commit: c26570a2306bf4ffe2963e3acdb82db19238f129
Author: Ulrich Müller  gentoo  org>
AuthorDate: Tue Dec 27 21:31:46 2022 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Tue Dec 27 21:31:46 2022 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=c26570a2

Revert "Appendix: Do not number sections."

This reverts commit 1da137e49aa5a52bb13500192d394b6dd53210da.

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

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

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



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

2023-02-26 Thread Ulrich Müller
commit: 39d51402f2eaa0ca06cb52ca3f5e1562a3496dbd
Author: Ulrich Müller  gentoo  org>
AuthorDate: Wed Jan 18 21:11:32 2023 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Wed Jan 18 21:11:32 2023 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=39d51402

Whitespace

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

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

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

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

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

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

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

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

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

Add an EAPI 9 identical to EAPI 8

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

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

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

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

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

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

EAPI feature table: Don't use a landscape table

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

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

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 225c2b6..b20693a 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -1,39 +1,24 @@
 \chapter{Feature Availability by EAPI}
 
 \note{This chapter is informative and for convenience only. Refer to the main 
text for specifics.
-For lack of space, EAPIs 0, 1, 2, 3, and~4 have been consolidated into a 
single column in the table
-below; entries marked with an asterisk differ between these EAPIs. See the 
2012-09-20 edition
-of this document for a complete table of previous EAPIs.}
-% 2012-09-20 (EAPI 5) edition has a table of EAPIs 0 to 5
+For lack of space, EAPIs 0 to~5 have been omitted from the table below, as 
well as items that would
+have identical entries for all listed EAPIs.}
 
 \ChangeWhenAddingAnEAPI{8}
-\begin{landscape}
-\begin{longtable}{llP{7.5em}P{7.5em}P{7.5em}P{7.5em}P{7.5em}}
+\begin{longtable}{@{}l@{}}
 \caption{Features in EAPIs}\\
 \toprule
 \multicolumn{1}{c}{\textbf{Feature}} &
-\multicolumn{1}{c}{\textbf{Reference}} &
-\multicolumn{5}{c}{\textbf{EAPIs}} \\
-\multicolumn{1}{c}{} &
-\multicolumn{1}{c}{} &
-\multicolumn{1}{c}{0, 1, 2, 3, 4} &
-\multicolumn{1}{c}{5} &
-\multicolumn{1}{c}{6} &
-\multicolumn{1}{c}{7} &
-\multicolumn{1}{c}{8} \\
+\multicolumn{1}{c}{\textbf{Ref.}} &
+\multicolumn{3}{c}{\textbf{EAPIs}} \\
+& & 6 & 7 & 8 \\
 \midrule
 \endfirsthead
 \midrule
 \multicolumn{1}{c}{\textbf{Feature}} &
-\multicolumn{1}{c}{\textbf{Reference}} &
-\multicolumn{5}{c}{\textbf{EAPIs}} \\
-\multicolumn{1}{c}{} &
-\multicolumn{1}{c}{} &
-\multicolumn{1}{c}{0, 1, 2, 3, 4} &
-\multicolumn{1}{c}{5} &
-\multicolumn{1}{c}{6} &
-\multicolumn{1}{c}{7} &
-\multicolumn{1}{c}{8} \\
+\multicolumn{1}{c}{\textbf{Ref.}} &
+\multicolumn{3}{c}{\textbf{EAPIs}} \\
+& & 6 & 7 & 8 \\
 \midrule
 \endhead
 \midrule
@@ -42,334 +27,148 @@ of this document for a complete table of previous EAPIs.}
 \endlastfoot
 
 \t{package.mask} directory & \compactfeatureref{package-mask-dir} &
-No & No & No & Yes & Yes \\
+No & Yes & Yes \\
 
 Less strict filenames in \t{updates} & \compactfeatureref{updates-filenames} &
-No & No & No & No & Yes \\
+No & No & Yes \\
 
 Profile files as directories & \compactfeatureref{profile-file-dirs} &
-No & No & No & Yes & Yes \\
+No & Yes & Yes \\
 
 \t{package.provided} & \compactfeatureref{package-provided} &
-Optional & Optional & Optional & No & No \\
-
-Stable use masking/forcing & \compactfeatureref{stablemask} &
-No & Yes & Yes & Yes & Yes \\
+Optional & No & No \\
 
 Bash version & \compactfeatureref{bash-version} &
-3.2 & 3.2 & 4.2 & 4.2 & 5.0 \\
-
-\t{failglob} in global scope & \compactfeatureref{failglob} &
-No & No & Yes & Yes & Yes \\
-
-\t{IUSE} defaults & \compactfeatureref{iuse-defaults} &
-* & Yes & Yes & Yes & Yes \\
-
-\t{REQUIRED_USE} & \compactfeatureref{required-use} &
-* & Yes & Yes & Yes & Yes \\
-
-\t{PROPERTIES} & \compactfeatureref{properties} &
-* & Yes & Yes & Yes & Yes \\
-
-\t{SRC_URI} arrows & \compactfeatureref{src-uri-arrows} &
-* & Yes & Yes & Yes & Yes \\
+4.2 & 4.2 & 5.0 \\
 
 Selective URI restrictions & \compactfeatureref{uri-restrict} &
-No & No & No & No & Yes \\
-
-\t{RDEPEND=DEPEND} & \compactfeatureref{rdepend-depend} &
-* & No & No & No & No \\
-
-\t{DEFINED_PHASES} & \compactfeatureref{defined-phases} &
-* & Yes & Yes & Yes & Yes \\
+No & No & Yes \\
 
 \t{BDEPEND} & \compactfeatureref{bdepend} &
-No & No & No & Yes & Yes \\
+No & Yes & Yes \\
 
 \t{IDEPEND} & \compactfeatureref{idepend} &
-No & No & No & No & Yes \\
-
-\t{??\ ( )} groups & \compactfeatureref{at-most-one-of} &
-No & Yes & Yes & Yes & Yes \\
+No & No & Yes \\
 
 Empty \t{||}, \t{\textasciicircum\textasciicircum} groups match &
 \compactfeatureref{empty-dep-groups} &
-Yes & Yes & Yes & No & No \\
-
-Slot dependencies & \compactfeatureref{slot-deps} &
-* & Named and Operator & Named and Operator & Named and Operator & Named 
and Operator \\
-
-Sub-slots & \compactfeatureref{sub-slot} &
-No & Yes & Yes & Yes & Yes \\
-
-Use dependencies & \compactfeatureref{use-deps} &
-* & 4-style & 4-style & 4-style & 4-style \\
-
-\t{!}\ blockers & \compactfeatureref{bang-strength} &
-* & Weak & Weak & Weak & Weak \\
-
-\t{!!}\ blockers & \compactfeatur

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

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

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

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

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

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

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

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

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



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

2023-02-26 Thread Ulrich Müller
commit: 9264cfb906e0eae7c44596c6c339715ef6191a50
Author: Ulrich Müller  gentoo  org>
AuthorDate: Fri Dec  9 19:03:30 2022 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Fri Dec  9 19:03:30 2022 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=9264cfb9

appendices.tex: No line break before GLEP number

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

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

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



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

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

Distinguish between "phase" and "phase function"

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

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

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

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



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

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

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

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

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

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



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

2023-02-26 Thread Ulrich Müller
commit: ab2bce21ac83e6ad6cc649ef09cd4bae334e4417
Author: Ulrich Müller  gentoo  org>
AuthorDate: Tue Dec 27 21:35:14 2022 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Tue Dec 27 21:44:34 2022 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=ab2bce21

Makefile: Use guessable names for section references in HTML output

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

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

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

diff --git a/Makefile b/Makefile
index 89fd7a2..c882534 100644
--- a/Makefile
+++ b/Makefile
@@ -54,6 +54,11 @@ pms.html: $(LATEXFILES) pms.bbl $(COMMITINFO)
@# remove redundant span elements
LC_ALL=C sed -Ei ':x;/]*)?$$/{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: /

2023-02-26 Thread Ulrich Müller
commit: eeddb7ad0b36822be7d3298caefa9475bc9dc466
Author: Ulrich Müller  gentoo  org>
AuthorDate: Wed Feb  1 18:11:56 2023 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Wed Feb  1 18:11:56 2023 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=eeddb7ad

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

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

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

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



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

2023-02-26 Thread Ulrich Müller
commit: 2c69291b26fea14b6a93f1bf6b4f0bfd7f74f7b9
Author: Ulrich Müller  gentoo  org>
AuthorDate: Wed Sep  7 06:35:09 2022 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Wed Sep  7 06:35:09 2022 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=2c69291b

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

Portage has been doing this since 2001.

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

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

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



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

2023-02-26 Thread Ulrich Müller
commit: e0aa80cc0d28a25bfc68b4671771083e282f6ba2
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sat Nov 19 20:22:34 2022 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Nov 19 20:22:34 2022 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=e0aa80cc

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

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

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

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

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

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



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

2023-02-26 Thread Ulrich Müller
commit: c5a07aa426d0536f6ff9387af471105ebb0ba96e
Author: Ulrich Müller  gentoo  org>
AuthorDate: Wed Feb  1 18:12:48 2023 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Wed Feb  1 18:12:48 2023 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=c5a07aa4

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

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

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

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

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



  1   2   >