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

2021-06-13 Thread Ulrich Müller
commit: 3f08956fc81ce208c56bf91c78276250660afeb4
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun Jun 13 19:12:50 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Jun 13 19:12:50 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=3f08956f

Cheat sheet: EAPI 8 approval date

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

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

diff --git a/eapi-cheatsheet.tex b/eapi-cheatsheet.tex
index 451ab85..0d28251 100644
--- a/eapi-cheatsheet.tex
+++ b/eapi-cheatsheet.tex
@@ -518,7 +518,7 @@ differences between these previous EAPIs.
 See \featureref{banned-commands}.
 \end{description}
 
-\section{EAPI 8}
+\section{EAPI 8 (2021-06-13)}
 \label{sec:cs:eapi8}
 \subsection{Additions/Changes}
 \label{sec:cs:eapi8-additions}



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

2021-06-05 Thread Ulrich Müller
commit: 5e135c7e0bbcd87e4bbb854048c21852c87de4b1
Author: Ulrich Müller  gentoo  org>
AuthorDate: Mon May 17 19:30:41 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Jun  5 08:55:39 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=5e135c7e

Split the econf options table because it has become too wide

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

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

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index e74f730..817b52b 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -346,23 +346,28 @@ commands once the current phase function has returned.
 \ChangeWhenAddingAnEAPI{8}
 \begin{centertable}{Extra \t{econf} arguments for EAPIs}
 \label{tab:econf-options-table}
-\begin{tabular}{}
+\begin{tabular}{l}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{1}{P{9em}}{\textbf{-{}-disable-dependency-tracking}} &
-  \multicolumn{1}{P{5em}}{\textbf{-{}-disable-silent-rules}} &
-  \multicolumn{1}{c}{\textbf{-{}-disable-static}} &
   \multicolumn{1}{c}{\textbf{-{}-datarootdir}} &
   \multicolumn{1}{c}{\textbf{-{}-docdir}} &
   \multicolumn{1}{c}{\textbf{-{}-htmldir}} &
   \multicolumn{1}{c}{\textbf{-{}-with-sysroot}} \\
   \midrule
-  0, 1, 2, 3& No  & No  & No  & No  & No  & No  & No  \\
-  4 & Yes & No  & No  & No  & No  & No  & No  \\
-  5 & Yes & Yes & No  & No  & No  & No  & No  \\
-  6 & Yes & Yes & No  & No  & Yes & Yes & No  \\
-  7 & Yes & Yes & No  & No  & Yes & Yes & Yes \\
-  8 & Yes & Yes & Yes & Yes & Yes & Yes & Yes \\
+  0, 1, 2, 3, 4, 5  & No  & No  & No  & No  \\
+  6 & No  & Yes & Yes & No  \\
+  7 & No  & Yes & Yes & Yes \\
+  8 & Yes & Yes & Yes & Yes \\
+  \midrule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{P{5.5em}}{\textbf{-{}-disable-dependency-tracking}} &
+  \multicolumn{1}{P{5em}}{\textbf{-{}-disable-silent-rules}} &
+  \multicolumn{1}{c}{\textbf{-{}-disable-static}} & \\
+  \midrule
+  0, 1, 2, 3& No  & No  & No  & \\
+  4 & Yes & No  & No  & \\
+  5, 6, 7   & Yes & Yes & No  & \\
+  8 & Yes & Yes & Yes & \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2021-06-05 Thread Ulrich Müller
commit: d73d6d6a5b9bbff4ec3611b9d34a116c4be98a1f
Author: Ulrich Müller  gentoo  org>
AuthorDate: Thu May 27 18:30:24 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Jun  5 08:55:43 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=d73d6d6a

Cheat sheet: Update for EAPI 8

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

 eapi-cheatsheet.tex | 62 -
 1 file changed, 61 insertions(+), 1 deletion(-)

diff --git a/eapi-cheatsheet.tex b/eapi-cheatsheet.tex
index 82602f2..451ab85 100644
--- a/eapi-cheatsheet.tex
+++ b/eapi-cheatsheet.tex
@@ -15,7 +15,7 @@
 \usepackage[local]{gitinfo2}
 \newcommand{\code}[1]{\texttt{#1}}
 % This should reflect the latest approved EAPI version
-\newcommand{\version}{7.0}
+\newcommand{\version}{8.0}
 \newcommand{\featureref}[1]{\textsc{#1} on page~\pageref{feat:#1}}
 \renewcommand{\familydefault}{\sfdefault}
 \urlstyle{sf}
@@ -517,6 +517,66 @@ differences between these previous EAPIs.
 used as replacement.
 See \featureref{banned-commands}.
 \end{description}
+
+\section{EAPI 8}
+\label{sec:cs:eapi8}
+\subsection{Additions/Changes}
+\label{sec:cs:eapi8-additions}
+\begin{description}
+\item[\code{profiles/updates} directory] Arbitrary filenames
+are now allowed, instead of strict naming by quarters
+(like \code{2Q-2021}). See \featureref{updates-filenames}.
+\item[Bash version] Ebuilds can use features of Bash version 5.0
+(was 4.2 before). See \featureref{bash-version}.
+\item[Selective fetch/mirror restriction] In \code{SRC_URI},
+adding a \code{fetch+} or \code{mirror+} prefix to an individual
+URI means that the file may be fetched or mirrored. This overrides
+the corresponding global settings in the \code{RESTRICT} variable.
+See \featureref{uri-restrict}.
+\item[\code{IDEPEND}] This variable specifies install-time
+dependencies on packages used in (e.\,g.) \code{pkg_postinst}.
+In a cross-compilation environment, these are dependencies for
+native tools (\code{CBUILD}). See \featureref{idepend}.
+\item[\code{pkg_*} phases] The initial working directory is
+guaranteed to be empty. See \featureref{phase-function-dir}.
+\item[\code{src_prepare}] Items in the \code{PATCHES} variable are
+interpreted as files, even if their name begins with a hyphen.
+See \featureref{src-prepare}.
+\item[\code{PROPERTIES} and \code{RESTRICT}] These variables are
+accumulated across the ebuild and inherited eclasses, like
+\code{IUSE}, \code{REQUIRED\_USE}, and \code{*DEPEND} were before.
+See \featureref{accumulate-vars}.
+\item[\code{econf}] If supported, options
+\code{-{}-disable-static} and
+\code{-{}-datarootdir=\$\{EPREFIX\}/usr/share} are passed
+to configure, respectively. See \featureref{econf-options}.
+\item[\code{dosym}] With the new option \code{-r}, an absolute
+path specified for the link target will be converted to a path
+relative to the link location. See \featureref{dosym-relative}. 
+\item[\code{insopts}] Commands \code{doconfd}, \code{doenvd},
+\code{doheader} install files with fixed mode 0644, i.\,e.,
+they are no longer affected by \code{insopts}.
+See \featureref{insopts}.
+\item[\code{exeopts}] Command \code{doinitd} installs files
+with fixed mode 0755, i.\,e., it is no longer affected by
+\code{exeopts}. See \featureref{exeopts}.
+\item[\code{usev}] This helper has an optional second argument
+now: \code{usev} \emph{ [true]}. If the flag is set,
+outputs \emph{[true]}, or the flag's name if called with only one
+argument. Otherwise outputs nothing. See \featureref{usev}.
+\end{description}
+\subsection{Removals/Bans}
+\label{sec:cs:eapi8-removalsbans}
+\begin{description}
+\item[\code{useq}] No longer allowed. Use regular \code{use} as
+a drop-in replacement. See \featureref{banned-commands}.
+\item[\code{hasv} and \code{hasq}] No longer allowed. Regular
+\code{has} should be used instead.
+See \featureref{banned-commands}.
+\item[\code{unpack}] No longer supports unpacking of 7-Zip, RAR,
+and LHA archives. See \featureref{unpack-extensions}.
+\end{description}
+
 \end{document}
 
 % vim: set filetype=tex fileencoding=utf8 et tw=70 spell spelllang=en :



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

2021-06-05 Thread Ulrich Müller
commit: c2847df81db51bc1402aa9a4339d53e5a0179208
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun May 16 18:59:37 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Jun  5 08:55:41 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=c2847df8

EAPI 8: usev has an optional second argument

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

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index d263cbc..5609de6 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -317,6 +317,9 @@ Controllable stripping & \compactfeatureref{dostrip} &
 \t{dostrip} & \compactfeatureref{dostrip} &
 No & No & No & Yes & Yes \\
 
+\t{usev} second arg & \compactfeatureref{usev} &
+No & No & No & No & Yes \\
+
 \t{use_with} empty third arg & \compactfeatureref{use-with} &
 * & Yes & Yes & Yes & Yes \\
 
@@ -529,6 +532,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{dosym} can create relative paths, \featureref{dosym-relative}.
 \item \t{insopts} no longer affects \t{doconfd}, \t{doenvd} and \t{doheader}, 
\featureref{insopts}.
 \item \t{exeopts} no longer affects \t{doinitd}, \featureref{exeopts}.
+\item \t{usev} supports an optional second argument, \featureref{usev}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index af45e62..92447d3 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -936,15 +936,17 @@ table~\ref{tab:use-list-strictness}.
 \item[use] Returns shell true (0) if the first argument (a \t{USE} flag name) 
is enabled, false
 otherwise.  If the flag name is prefixed with \t{!}, returns true if the 
flag is disabled, and
 false if it is enabled. It is guaranteed that this command is quiet.
-\item[usev] The same as \t{use}, but also prints the flag name if the condition
-is met.
+\item[usev] \featurelabel{usev} The same as \t{use}, but also prints the flag 
name if the condition
+is met. In EAPIs listed in table~\ref{tab:use-list-args} as supporting an 
optional second
+argument for \t{usev}, prints the second argument instead, if it is 
specified and if the
+condition is met.
 \item[useq] Deprecated synonym for \t{use}.
 In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as per
 section~\ref{sec:banned-commands}.
 \item[use_with] \featurelabel{use-with} Has one-, two-, and three-argument 
forms. The first
 argument is a USE flag name, the second a \t{configure} option name 
(\t{\$\{opt\}}), defaulting
 to the same as the first argument if not provided, and the third is a 
string value
-(\t{\$\{value\}}). For EAPIs listed in table~\ref{tab:use-with-third-arg} 
as not supporting it,
+(\t{\$\{value\}}). For EAPIs listed in table~\ref{tab:use-list-args} as 
not supporting it,
 an empty third argument is treated as if it weren't provided. If the USE 
flag is set, outputs
 \t{-{}-with-\$\{opt\}=\$\{value\}} if the third argument was provided, and
 \t{-{}-with-\$\{opt\}} otherwise. If the flag is not set, then it outputs
@@ -979,15 +981,18 @@ table~\ref{tab:use-list-strictness}.
 \end{centertable}
 
 \ChangeWhenAddingAnEAPI{8}
-\begin{centertable}{EAPIs supporting empty third argument in \t{use_with} and 
\t{use_enable}}
-\label{tab:use-with-third-arg}
-\begin{tabular}{ll}
+\begin{centertable}{\t{usev}, \t{use_with} and \t{use_enable} arguments for 
EAPIs}
+\label{tab:use-list-args}
+\begin{tabular}{lll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{1}{c}{\textbf{Supports empty third argument?}} \\
+  \multicolumn{1}{P{8em}}{\textbf{\t{usev} has optional second argument?}} 
&
+  \multicolumn{1}{P{14em}}{\textbf{\t{use_with} and \t{use_enable} support 
empty third
+argument?}} \\
   \midrule
-  0, 1, 2, 3& No  \\
-  4, 5, 6, 7, 8 & Yes \\
+  0, 1, 2, 3& No  & No  \\
+  4, 5, 6, 7& No  & Yes \\
+  8 & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2021-06-05 Thread Ulrich Müller
commit: c1d561c12f727bf475d3f6f06009a1c924cbc4a2
Author: Ulrich Müller  gentoo  org>
AuthorDate: Mon May 17 15:45:42 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Jun  5 08:55:39 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=c1d561c1

EAPI 8: econf adds --disable-static

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

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 32f4a66..bbb8957 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -272,7 +272,8 @@ Output commands use stdout & 
\compactfeatureref{output-no-stdout} &
 disable dependency tracking, disable silent rules &
 disable dependency tracking, disable silent rules, docdir, htmldir &
 disable dependency tracking, disable silent rules, docdir, htmldir, with 
sysroot &
-disable dependency tracking, disable silent rules, datarootdir, docdir, 
htmldir, with sysroot \\
+disable dependency tracking, disable silent rules, disable static,
+datarootdir, docdir, htmldir, with sysroot \\
 
 \t{dodoc -r} & \compactfeatureref{dodoc} &
 * & Yes & Yes & Yes & Yes \\
@@ -515,6 +516,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{useq} banned, \featureref{banned-commands}.
 \item \t{hasv} and \t{hasq} banned, \featureref{banned-commands}.
 \item \t{econf} adds \t{-{}-datarootdir}, \featureref{econf-options}.
+\item \t{econf} adds \t{-{}-disable-static}, \featureref{econf-options}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 7909bdd..e74f730 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -338,27 +338,31 @@ commands once the current phase function has returned.
 \item \t{-{}-disable-silent-rules}, 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-silent-rules}
 occurs in the output of \t{configure -{}-help}.
+\item \t{-{}-disable-static}, if the EAPI is listed in 
table~\ref{tab:econf-options-table}
+as using it. This option will only be passed if the string 
\t{-{}-disable-static} occurs
+in the output of \t{configure -{}-help}.
 \end{itemize}
 
 \ChangeWhenAddingAnEAPI{8}
 \begin{centertable}{Extra \t{econf} arguments for EAPIs}
 \label{tab:econf-options-table}
-\begin{tabular}{lll}
+\begin{tabular}{}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{P{9em}}{\textbf{-{}-disable-dependency-tracking}} &
   \multicolumn{1}{P{5em}}{\textbf{-{}-disable-silent-rules}} &
+  \multicolumn{1}{c}{\textbf{-{}-disable-static}} &
   \multicolumn{1}{c}{\textbf{-{}-datarootdir}} &
   \multicolumn{1}{c}{\textbf{-{}-docdir}} &
   \multicolumn{1}{c}{\textbf{-{}-htmldir}} &
   \multicolumn{1}{c}{\textbf{-{}-with-sysroot}} \\
   \midrule
-  0, 1, 2, 3& No  & No  & No  & No  & No  & No  \\
-  4 & Yes & No  & No  & No  & No  & No  \\
-  5 & Yes & Yes & No  & No  & No  & No  \\
-  6 & Yes & Yes & No  & Yes & Yes & No  \\
-  7 & Yes & Yes & No  & Yes & Yes & Yes \\
-  8 & Yes & Yes & Yes & Yes & Yes & Yes \\
+  0, 1, 2, 3& No  & No  & No  & No  & No  & No  & No  \\
+  4 & Yes & No  & No  & No  & No  & No  & No  \\
+  5 & Yes & Yes & No  & No  & No  & No  & No  \\
+  6 & Yes & Yes & No  & No  & Yes & Yes & No  \\
+  7 & Yes & Yes & No  & No  & Yes & Yes & Yes \\
+  8 & Yes & Yes & Yes & Yes & Yes & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2021-06-05 Thread Ulrich Müller
commit: 537053475a6b9f17ff61cc4af4923bd980213242
Author: Ulrich Müller  gentoo  org>
AuthorDate: Wed May 26 20:12:09 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Jun  5 08:55:42 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=53705347

Cheat sheet: Remove EAPI 5 to make room for EAPI 8

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

 eapi-cheatsheet.tex | 140 ++--
 1 file changed, 70 insertions(+), 70 deletions(-)

diff --git a/eapi-cheatsheet.tex b/eapi-cheatsheet.tex
index fb62827..82602f2 100644
--- a/eapi-cheatsheet.tex
+++ b/eapi-cheatsheet.tex
@@ -77,7 +77,7 @@
 \footnote{\url{https://creativecommons.org/licenses/by-sa/4.0/}}
 \end{abstract}
 
-\section{EAPIs 0, 1, 2, 3, and 4}
+\section{EAPIs 0, 1, 2, 3, 4, and 5}
 \label{sec:cs:eapi0-2}
 Omitted for lack of space. See version~5.0 of this document for
 differences between these previous EAPIs.
@@ -257,75 +257,75 @@ differences between these previous EAPIs.
 % any more.  See \featureref{aa} and \featureref{kv}.
 % \end{description}
 
-\section{EAPI 5 (2012-09-20)}
-\label{sec:cs:eapi5}
-\subsection{Additions/Changes}
-\label{sec:cs:eapi5-additions}
-\begin{description}
-\item[Sub-slots] The \code{SLOT} variable and slot dependencies
-may contain an optional sub-slot part that follows the regular
-slot, delimited by a \code{/} character; for example
-\code{2/2.30}.  The sub-slot is used to represent cases in which
-an upgrade to a new version of a package with a different sub-slot
-may require dependent packages to be rebuilt.  If the sub-slot is
-not specified in \code{SLOT}, it defaults to the regular slot.
-See \featureref{sub-slot}.
-\item[Slot operator dependencies] Package dependencies can specify
-one of the following operators as a suffix, which will affect
-updates of runtime dependencies:
-\begin{description}
-\item[\code{:*}] Any slot value is acceptable.  The package
-will not break when its dependency is updated.
-\item[\code{:=}] Any slot value is acceptable, but the package
-can break when its dependency is updated to a different slot
-(or sub-slot).
-\end{description}
-See \featureref{slot-operator-deps}.
-\item[Profile \code{IUSE} injection] Apart from the USE flags
-explicitly listed in \code{IUSE}, additional flags can be
-implicitly provided by profiles.
-See \featureref{profile-iuse-inject}.
-\item[At-most-one-of groups] In \code{REQUIRED_USE} you can use
-"\code{??\ ( flag1 flag2 \dots\ )}" to allow zero or one USE flag
-out of many.
-See \featureref{at-most-one-of}.
-\item[Parallel tests] The default for \code{src_test} runs
-\code{emake} without \code{-j1} now.
-See \featureref{parallel-tests}.
-\item[\code{econf} changes] The \code{econf} function now always
-passes \code{-{}-disable-silent-rules} to \code{configure}.
-See \featureref{econf-options}.
-\item[\code{has_version} and \code{best_version} changes]
-The two helpers support a \code{-{}-host-root} option that causes
-the query to apply to the host root instead of \code{ROOT}.
-See~\featureref{pm-query-options}.
-\item[\code{usex}] Usage for this helper function is
-\code{usex} \emph{ [true1] [false1] [true2] [false2]}.
-If the USE flag is set, outputs \emph{[true1][true2]}
-(defaults to \code{yes}), otherwise outputs
-\emph{[false1][false2]} (defaults to \code{no}).
-See \featureref{usex}.
-\item[\code{doheader} and \code{newheader}] These new helper
-functions install the given header file(s) into
-\code{/usr/include}. The \code{-r} option enables recursion for
-\code{doheader}, similar to \code{doins}.
-See \featureref{doheader}.
-\item[\code{new*} standard input] The \code{newins} etc.\ commands
-read from standard input if the first argument is \code{-}
-(a hyphen).
-See \featureref{newfoo-stdin}.
-\item[\code{EBUILD_PHASE_FUNC}] This variable is very similar to
-\code{EBUILD_PHASE}, but contains the name of the current ebuild
-function.
-See \featureref{ebuild-phase-func}.
-\item[Stable use masking/forcing] New files
-\code{use.stable.\allowbreak\{mask,force\}} and
-\code{package.use.stable.\allowbreak\{mask,force\}}
-are supported in profile directories.  They are similar to their
-non-\code{stable} counterparts, but act only on packages that
-would be merged due to a stable keyword.
-See \featureref{stablemask}.
-\end{description}
+% \section{EAPI 5 (2012-09-20)}
+% \label{sec:cs:eapi5}
+% \subsection{Additions/Changes}
+% \label{sec:cs:eapi5-additions}
+% \begin{description}
+% \item[Sub-slots] The \code{SLOT} variable and slot dependencies
+% may contain an optional sub-slot part that follows the regular
+% slot, delimited by a \code{/} character; for example
+% 

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

2021-06-05 Thread Ulrich Müller
commit: 5567f230848b143218f44ba03393bf810e0b4e54
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun May 16 16:15:04 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Jun  5 08:55:40 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=5567f230

EAPI 8: insopts and exeopts affect only doins and doexe

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

 eapi-differences.tex |  8 +++
 pkg-mgr-commands.tex | 64 ++--
 2 files changed, 60 insertions(+), 12 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 8cfc442..d263cbc 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -299,6 +299,12 @@ Output commands use stdout & 
\compactfeatureref{output-no-stdout} &
 \t{new*} support stdin & \compactfeatureref{newfoo-stdin} &
 No & Yes & Yes & Yes & Yes \\
 
+\t{insopts} affects misc.\ commands & \compactfeatureref{insopts} &
+Yes & Yes & Yes & Yes & No \\
+
+\t{exeopts} affects \t{doinitd} & \compactfeatureref{exeopts} &
+Yes & Yes & Yes & Yes & No \\
+
 Controllable compression & \compactfeatureref{docompress} &
 * & Yes & Yes & Yes & Yes \\
 
@@ -521,6 +527,8 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{econf} adds \t{-{}-datarootdir}, \featureref{econf-options}.
 \item \t{econf} adds \t{-{}-disable-static}, \featureref{econf-options}.
 \item \t{dosym} can create relative paths, \featureref{dosym-relative}.
+\item \t{insopts} no longer affects \t{doconfd}, \t{doenvd} and \t{doheader}, 
\featureref{insopts}.
+\item \t{exeopts} no longer affects \t{doinitd}, \featureref{exeopts}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 4e43c69..af45e62 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -460,8 +460,9 @@ the current phase function has returned.
 \t{joe:users}. Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
 
 \item[doconfd] Installs the given config files into \t{/etc/conf.d/}, by 
default with file mode
-\t{0644}, or with the \t{install} options set by the most recent 
\t{insopts} call.
-Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
+\t{0644}. For EAPIs listed in table~\ref{tab:insopts-commands} as 
respecting \t{insopts}
+in \t{doconfd}, the \t{install} options set by the most recent \t{insopts} 
call override
+the default. Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
 
 \item[dodir] Creates the given directories, by default with file mode 
\t{0755}, or with the
 \t{install} options set by the most recent \t{diropts} call. Failure 
behaviour is EAPI
@@ -478,8 +479,9 @@ the current phase function has returned.
 section~\ref{sec:failure-behaviour}.
 
 \item[doenvd] Installs the given environment files into \t{/etc/env.d/}, by 
default with file mode
-\t{0644}, or with the \t{install} options set by the most recent 
\t{insopts} call.
-Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
+\t{0644}. For EAPIs listed in table~\ref{tab:insopts-commands} as 
respecting \t{insopts}
+in \t{doenvd}, the \t{install} options set by the most recent \t{insopts} 
call override
+the default. Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
 
 \item[doexe] Installs the given files into the directory specified by the most 
recent \t{exeinto}
 call. If \t{exeinto} has not yet been called, behaviour is undefined. 
Files are installed by
@@ -494,9 +496,10 @@ the current phase function has returned.
 section~\ref{sec:banned-commands}.
 
 \item[doheader] \featurelabel{doheader} Installs the given header files into 
\t{/usr/include/},
-by default with file mode \t{0644}, or with the \t{install} options set by 
the most recent
-\t{insopts} call. If the first argument is \t{-r}, then operates 
recursively, descending
-into any directories given.
+by default with file mode \t{0644}. For EAPIs listed in 
table~\ref{tab:insopts-commands}
+as respecting \t{insopts} in \t{doheader}, the \t{install} options set by 
the most recent
+\t{insopts} call override the default. If the first argument is \t{-r}, 
then operates
+recursively, descending into any directories given.
 Only available in EAPIs listed in table~\ref{tab:doheader-table} as 
supporting \t{doheader}.
 Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
 
@@ -529,8 +532,9 @@ the current phase function has returned.
 \t{0644}. Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
 
 \item[doinitd] Installs the given initscript files into \t{/etc/init.d}, by 
default with file mode
-\t{0755}, or with the \t{install} options set by the most recent 
\t{exeopts} call.
-Failure behaviour is EAPI 

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

2021-06-05 Thread Ulrich Müller
commit: 5001b56490c821aa8e77f67f9e9bb62e804fa129
Author: Michał Górny  gentoo  org>
AuthorDate: Tue Dec 24 09:46:26 2019 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Jun  5 08:55:38 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=5001b564

EAPI 8 has econf passing --datarootdir

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

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index a2a74b8..32f4a66 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -272,7 +272,7 @@ Output commands use stdout & 
\compactfeatureref{output-no-stdout} &
 disable dependency tracking, disable silent rules &
 disable dependency tracking, disable silent rules, docdir, htmldir &
 disable dependency tracking, disable silent rules, docdir, htmldir, with 
sysroot &
-disable dependency tracking, disable silent rules, docdir, htmldir, with 
sysroot \\
+disable dependency tracking, disable silent rules, datarootdir, docdir, 
htmldir, with sysroot \\
 
 \t{dodoc -r} & \compactfeatureref{dodoc} &
 * & Yes & Yes & Yes & Yes \\
@@ -514,6 +514,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{PROPERTIES} and \t{RESTRICT} accumulated across eclasses, 
\featureref{accumulate-vars}.
 \item \t{useq} banned, \featureref{banned-commands}.
 \item \t{hasv} and \t{hasq} banned, \featureref{banned-commands}.
+\item \t{econf} adds \t{-{}-datarootdir}, \featureref{econf-options}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index c56e592..7909bdd 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -312,6 +312,9 @@ commands once the current phase function has returned.
 \item \t{-{}-mandir} must be \t{\$\{EPREFIX\}/usr/share/man}
 \item \t{-{}-infodir} must be \t{\$\{EPREFIX\}/usr/share/info}
 \item \t{-{}-datadir} must be \t{\$\{EPREFIX\}/usr/share}
+\item \t{-{}-datarootdir} must be \t{\$\{EPREFIX\}/usr/share}, 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{-{}-datarootdir} occurs in the output of \t{configure 
-{}-help}.
 \item \t{-{}-sysconfdir} must be \t{\$\{EPREFIX\}/etc}
 \item \t{-{}-localstatedir} must be \t{\$\{EPREFIX\}/var/lib}
 \item \t{-{}-docdir} must be \t{\$\{EPREFIX\}/usr/share/doc/\$\{PF\}}, if 
the EAPI is listed in
@@ -340,20 +343,22 @@ commands once the current phase function has returned.
 \ChangeWhenAddingAnEAPI{8}
 \begin{centertable}{Extra \t{econf} arguments for EAPIs}
 \label{tab:econf-options-table}
-\begin{tabular}{ll}
+\begin{tabular}{lll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{P{9em}}{\textbf{-{}-disable-dependency-tracking}} &
   \multicolumn{1}{P{5em}}{\textbf{-{}-disable-silent-rules}} &
+  \multicolumn{1}{c}{\textbf{-{}-datarootdir}} &
   \multicolumn{1}{c}{\textbf{-{}-docdir}} &
   \multicolumn{1}{c}{\textbf{-{}-htmldir}} &
   \multicolumn{1}{c}{\textbf{-{}-with-sysroot}} \\
   \midrule
-  0, 1, 2, 3& No  & No  & No  & No  & No  \\
-  4 & Yes & No  & No  & No  & No  \\
-  5 & Yes & Yes & No  & No  & No  \\
-  6 & Yes & Yes & Yes & Yes & No  \\
-  7, 8  & Yes & Yes & Yes & Yes & Yes \\
+  0, 1, 2, 3& No  & No  & No  & No  & No  & No  \\
+  4 & Yes & No  & No  & No  & No  & No  \\
+  5 & Yes & Yes & No  & No  & No  & No  \\
+  6 & Yes & Yes & No  & Yes & Yes & No  \\
+  7 & Yes & Yes & No  & Yes & Yes & Yes \\
+  8 & Yes & Yes & Yes & Yes & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2021-06-05 Thread Ulrich Müller
commit: 7ecef5fa690f1fcff2c615e4ea757d629a7bbdcf
Author: Michał Górny  gentoo  org>
AuthorDate: Tue Dec 24 21:50:30 2019 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Jun  5 08:55:41 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=7ecef5fa

EAPI 8 removes .7z, .rar, .lha unpack support

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

 eapi-differences.tex | 10 ++
 pkg-mgr-commands.tex | 21 ++---
 2 files changed, 24 insertions(+), 7 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 5609de6..900f415 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -341,6 +341,15 @@ Controllable stripping & \compactfeatureref{dostrip} &
 \t{unpack} support for \t{txz} & \compactfeatureref{unpack-extensions} &
 No & No & Yes & Yes & Yes \\
 
+\t{unpack} support for \t{7z} & \compactfeatureref{unpack-extensions} &
+Yes & Yes & Yes & Yes & No \\
+
+\t{unpack} support for \t{lha} & \compactfeatureref{unpack-extensions} &
+Yes & Yes & Yes & Yes & No \\
+
+\t{unpack} support for \t{rar} & \compactfeatureref{unpack-extensions} &
+Yes & Yes & Yes & Yes & No \\
+
 \t{unpack} case-insensitive & \compactfeatureref{unpack-ignore-case} &
 No & No & Yes & Yes & Yes \\
 
@@ -533,6 +542,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{insopts} no longer affects \t{doconfd}, \t{doenvd} and \t{doheader}, 
\featureref{insopts}.
 \item \t{exeopts} no longer affects \t{doinitd}, \featureref{exeopts}.
 \item \t{usev} supports an optional second argument, \featureref{usev}.
+\item \t{unpack} no longer supports \t{.7z}, \t{.rar}, \t{.lha}, 
\featureref{unpack-extensions}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 92447d3..04a8ac4 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -1153,10 +1153,13 @@ has returned.
 \item bzip2-compressed tar files (\t{*.tar.bz2, *.tbz2, *.tar.bz, *.tbz}). 
Ebuilds must ensure
 that bzip2 and GNU tar are installed.
 \item zip files (\t{*.zip, *.ZIP, *.jar}). Ebuilds must ensure that 
Info-ZIP Unzip is installed.
-\item 7zip files (\t{*.7z, *.7Z}). Ebuilds must ensure that P7ZIP is 
installed.
+\item 7zip files (\t{*.7z, *.7Z}). Ebuilds must ensure that P7ZIP is 
installed. Only for EAPIs
+listed in table~\ref{tab:unpack-extensions-table} as supporting 
\t{.7z}.
 \item rar files (\t{*.rar, *.RAR}). Ebuilds must ensure that RARLAB's 
unrar is installed.
+Only for EAPIs listed in table~\ref{tab:unpack-extensions-table} as 
supporting \t{.rar}.
 \item LHA archives (\t{*.LHA, *.LHa, *.lha, *.lzh}). Ebuilds must ensure 
that the lha program is
-installed.
+installed. Only for EAPIs listed in 
table~\ref{tab:unpack-extensions-table} as supporting
+\t{.lha}.
 \item ar archives (\t{*.a}). Ebuilds must ensure that GNU binutils is 
installed.
 \item deb packages (\t{*.deb}). Ebuilds must ensure that the deb2targz 
program is installed on
 those platforms where the GNU binutils ar program is not available and 
the installed ar
@@ -1195,16 +1198,20 @@ has returned.
 \ChangeWhenAddingAnEAPI{8}
 \begin{centertable}{\t{unpack} extensions for EAPIs}
 \label{tab:unpack-extensions-table}
-\begin{tabular}{}
+\begin{tabular}{}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{c}{\textbf{\t{.xz}?}} &
   \multicolumn{1}{c}{\textbf{\t{.tar.xz}?}} &
-  \multicolumn{1}{c}{\textbf{\t{.txz}?}} \\
+  \multicolumn{1}{c}{\textbf{\t{.txz}?}} &
+  \multicolumn{1}{c}{\textbf{\t{.7z}?}} &
+  \multicolumn{1}{c}{\textbf{\t{.rar}?}} &
+  \multicolumn{1}{c}{\textbf{\t{.lha}?}} \\
   \midrule
-  0, 1, 2   & No  & No  & No  \\
-  3, 4, 5   & Yes & Yes & No  \\
-  6, 7, 8   & Yes & Yes & Yes \\
+  0, 1, 2   & No  & No  & No  & Yes & Yes & Yes \\
+  3, 4, 5   & Yes & Yes & No  & Yes & Yes & Yes \\
+  6, 7  & Yes & Yes & Yes & Yes & Yes & Yes \\
+  8 & Yes & Yes & Yes & No  & No  & No  \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2021-06-05 Thread Ulrich Müller
commit: 42fdc187b717120717e55d9b1bee06a764e55b5d
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun May 16 18:22:15 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Jun  5 08:55:40 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=42fdc187

EAPI 8 has dosym -r

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

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index bbb8957..8cfc442 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -293,6 +293,9 @@ Output commands use stdout & 
\compactfeatureref{output-no-stdout} &
 \t{domo} destination path & \compactfeatureref{domo-path} &
 \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{/usr} & 
\t{/usr} \\
 
+\t{dosym -r} & \compactfeatureref{dosym-relative} &
+No & No & No & No & Yes \\
+
 \t{new*} support stdin & \compactfeatureref{newfoo-stdin} &
 No & Yes & Yes & Yes & Yes \\
 
@@ -517,6 +520,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{hasv} and \t{hasq} banned, \featureref{banned-commands}.
 \item \t{econf} adds \t{-{}-datarootdir}, \featureref{econf-options}.
 \item \t{econf} adds \t{-{}-disable-static}, \featureref{econf-options}.
+\item \t{dosym} can create relative paths, \featureref{dosym-relative}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 817b52b..4e43c69 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -599,9 +599,28 @@ the current phase function has returned.
 
 \item[dosbin] As \t{dobin}, but installs to \t{DESTTREE/sbin}.
 
-\item[dosym] Creates a symbolic link named as for its second parameter, 
pointing to the first. If
-the directory containing the new link does not exist, creates it. Failure 
behaviour is EAPI
-dependent as per section~\ref{sec:failure-behaviour}.
+\item[dosym] Creates a symbolic link named as for its second parameter, 
pointing to the first.
+If the directory containing the new link does not exist, creates it.
+
+\featurelabel{dosym-relative} In EAPIs listed in table~\ref{tab:dosym-r} 
as supporting creation
+of relative paths, when called with option \t{-r}, the first parameter 
(the link target) is
+converted from an absolute path to a path relative to the the second 
parameter (the link name).
+The  algorithm must return a result identical to the one returned by the 
function in
+listing~\ref{lst:dosym-r}, with \t{realpath} and \t{dirname} from GNU 
coreutils version~8.32.
+Specifying option \t{-r} together with a relative path as first (target) 
parameter is an error.
+
+Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
+
+\begin{listing}[h]
+\caption{Create a relative path for \t{dosym -r}} \label{lst:dosym-r}
+\begin{verbatim}
+dosym_relative_path() {
+local link=$(realpath -m -s "/${2#/}")
+local linkdir=$(dirname "${link}")
+realpath -m -s --relative-to="${linkdir}" "$1"
+}
+\end{verbatim}
+\end{listing}
 
 \item[fowners] Acts as for \t{chown}, but takes paths relative to the image 
directory. Failure
 behaviour is EAPI dependent as per section~\ref{sec:failure-behaviour}.
@@ -729,6 +748,20 @@ the current phase function has returned.
 \end{tabular}
 \end{centertable}
 
+\ChangeWhenAddingAnEAPI{8}
+\begin{centertable}{EAPIs supporting \t{dosym -r}}
+\label{tab:dosym-r}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{\t{dosym} supports creation of relative 
paths?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7  & No  \\
+  8   & Yes \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \subsection{Commands affecting install destinations}
 The following commands are used to set the various destination trees and 
options used by the above
 installation commands. They must be shell functions or aliases, due to the 
need to set variables



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

2021-06-05 Thread Ulrich Müller
commit: 70b5befa05d872c1aed119ab4e864d98d0a360d2
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun May 16 12:05:17 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Jun  5 08:55:38 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=70b5befa

EAPI 8: useq, hasv and hasq are banned

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

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index c7af2b3..a2a74b8 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -236,6 +236,15 @@ Most utilities die & \compactfeatureref{die-on-failure} &
 \t{libopts} & \compactfeatureref{banned-commands} &
 Yes & Yes & Yes & Banned & Banned \\
 
+\t{useq} & \compactfeatureref{banned-commands} &
+Yes & Yes & Yes & Yes & Banned \\
+
+\t{hasv} & \compactfeatureref{banned-commands} &
+Yes & Yes & Yes & Yes & Banned \\
+
+\t{hasq} & \compactfeatureref{banned-commands} &
+Yes & Yes & Yes & Yes & Banned \\
+
 Query command options & \compactfeatureref{pm-query-options} &
 None & \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} &
 \t{-b}, \t{-d}, \t{-r} \\
@@ -503,6 +512,8 @@ EAPI 8 is EAPI 7 with the following changes:
 \item Empty working directory in \t{pkg_*} phase functions, 
\featureref{phase-function-dir}.
 \item Different \t{src_prepare} implementation, \featureref{src-prepare}.
 \item \t{PROPERTIES} and \t{RESTRICT} accumulated across eclasses, 
\featureref{accumulate-vars}.
+\item \t{useq} banned, \featureref{banned-commands}.
+\item \t{hasv} and \t{hasq} banned, \featureref{banned-commands}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 71d1e89..c56e592 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -73,6 +73,16 @@ called, the package manager must abort the build process 
indicating an error.
   4, 5  & Yes & Yes & No  & No  & No  & No  \\
   6 & Yes & Yes & Yes & No  & No  & No  \\
   7, 8  & Yes & Yes & Yes & Yes & Yes & Yes \\
+  \midrule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{6}{c}{\textbf{Command banned?}} \\
+  \multicolumn{1}{c}{} &
+  \multicolumn{1}{c}{\textbf{\t{useq}}} &
+  \multicolumn{1}{c}{\textbf{\t{hasv}}} &
+  \multicolumn{1}{c}{\textbf{\t{hasq}}} & & & \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7  & No  & No  & No  & & & \\
+  8   & Yes & Yes & Yes & & & \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -842,6 +852,8 @@ table~\ref{tab:use-list-strictness}.
 \item[usev] The same as \t{use}, but also prints the flag name if the condition
 is met.
 \item[useq] Deprecated synonym for \t{use}.
+In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as per
+section~\ref{sec:banned-commands}.
 \item[use_with] \featurelabel{use-with} Has one-, two-, and three-argument 
forms. The first
 argument is a USE flag name, the second a \t{configure} option name 
(\t{\$\{opt\}}), defaulting
 to the same as the first argument if not provided, and the third is a 
string value
@@ -916,7 +928,11 @@ These functions check whitespace-separated lists for a 
particular value.
 \item[has] Returns shell true (0) if the first argument (a word) is found in 
the list of subsequent
 arguments, false otherwise. Guaranteed quiet.
 \item[hasv] The same as \t{has}, but also prints the first argument if found.
+In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as per
+section~\ref{sec:banned-commands}.
 \item[hasq] Deprecated synonym for \t{has}.
+In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as per
+section~\ref{sec:banned-commands}.
 \end{description}
 
 \subsection{Version manipulation and comparison commands}



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

2021-06-05 Thread Ulrich Müller
commit: bd0dab0f2c91aa4b1840bff77a34d83c3424d90c
Author: Ulrich Müller  gentoo  org>
AuthorDate: Wed May 26 20:11:32 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Jun  5 08:55:42 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=bd0dab0f

Cheat sheet: Fix cross references

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

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

diff --git a/eapi-cheatsheet.tex b/eapi-cheatsheet.tex
index 83ddfa7..fb62827 100644
--- a/eapi-cheatsheet.tex
+++ b/eapi-cheatsheet.tex
@@ -348,10 +348,10 @@ differences between these previous EAPIs.
 which applies patches from the \code{PATCHES} variable with the
 new \code{eapply} command, and user-provided patches with
 \code{eapply_user}.
-See \featureref{src-prepare-6}.
+See \featureref{src-prepare}.
 \item[\code{src_install}] The default implementation uses the new
 \code{einstalldocs} function for installing documentation.
-See \featureref{src-install-6}.
+See \featureref{src-install}.
 \item[\code{nonfatal die}] When \code{die} or \code{assert} are
 called under the \code{nonfatal} command and with the \code{-n}
 option, they will not abort the build process but return with an



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

2021-06-05 Thread Ulrich Müller
commit: a3693aec2011a666a437e3cea777012ac26fa1b2
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun May 16 19:06:02 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Jun  5 08:55:37 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=a3693aec

EAPI 8: Default src_prepare doesn't accept options in PATCHES

Also simplify array detection by using the @a operator in parameter
expansion. This feature was introduced in bash-4.4.

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

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 842e09f..aeddb6e 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -124,7 +124,7 @@ Working directory in \t{pkg_*} phases & 
\compactfeatureref{phase-function-dir} &
 * & Yes & Yes & Yes & Yes \\
 
 \t{src_prepare} style & \compactfeatureref{src-prepare} &
-* & no-op & 6 & 6 & 6 \\
+* & no-op & 6 & 6 & 8 \\
 
 \t{src_configure} & \compactfeatureref{src-configure} &
 * & Yes & Yes & Yes & Yes \\
@@ -498,6 +498,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item Selective fetch/mirror restriction, \featureref{uri-restrict}.
 \item \t{IDEPEND}, \featureref{idepend}.
 \item Empty working directory in \t{pkg_*} phase functions, 
\featureref{phase-function-dir}.
+\item Different \t{src_prepare} implementation, \featureref{src-prepare}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/ebuild-functions.tex b/ebuild-functions.tex
index b224e0b..0c745c3 100644
--- a/ebuild-functions.tex
+++ b/ebuild-functions.tex
@@ -142,9 +142,9 @@ post-unpack source preparation.
 The initial working directory is \t{S}, with an error or fallback to 
\t{WORKDIR} as discussed in
 section~\ref{sec:s-to-workdir-fallback}.
 
-For EAPIs listed in table~\ref{tab:src-prepare-table} as using format~6, the 
default
+For EAPIs listed in table~\ref{tab:src-prepare-table} as using format 6 or~8, 
the default
 implementation used when the ebuild lacks the \t{src_prepare} function shall 
behave as in
-listing~\ref{lst:src-prepare-6}.
+listing~\ref{lst:src-prepare-6} or listing~\ref{lst:src-prepare-8}, 
respectively.
 
 For other EAPIs supporting \t{src_prepare}, the default implementation used 
when the ebuild lacks
 the \t{src_prepare} function is a no-op.
@@ -160,7 +160,8 @@ the \t{src_prepare} function is a no-op.
   \midrule
   0, 1  & No  & Not applicable \\
   2, 3, 4, 5& Yes & no-op  \\
-  6, 7, 8   & Yes & 6  \\
+  6, 7  & Yes & 6  \\
+  8 & Yes & 8  \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -179,6 +180,20 @@ src_prepare() {
 \end{verbatim}
 \end{listing}
 
+\begin{listing}[H]
+\caption{\t{src_prepare}, format~8} \label{lst:src-prepare-8}
+\begin{verbatim}
+src_prepare() {
+if [[ ${PATCHES@a} == *a* ]]; then
+[[ -n ${PATCHES[@]} ]] && eapply -- "${PATCHES[@]}"
+else
+[[ -n ${PATCHES} ]] && eapply -- ${PATCHES}
+fi
+eapply_user
+}
+\end{verbatim}
+\end{listing}
+
 \subsection{src_configure}
 
 \featurelabel{src-configure} The \t{src_configure} function is only called for 
EAPIs listed in



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

2021-06-05 Thread Ulrich Müller
commit: 5b8055e40ac6698dad463f5df553a9c17928abc9
Author: Ulrich Müller  gentoo  org>
AuthorDate: Thu May 10 17:08:50 2018 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Jun  5 08:55:31 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=5b8055e4

Add an EAPI 8 identical to EAPI 7

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

 commands.tex  |   4 +-
 dependencies.tex  |  26 +++
 eapi-differences.tex  | 201 +++---
 eapis.tex |   3 +-
 ebuild-env-vars.tex   |  24 +++---
 ebuild-format.tex |   4 +-
 ebuild-functions.tex  |  42 +--
 ebuild-vars.tex   |  24 +++---
 merge.tex |   4 +-
 pkg-mgr-commands.tex  |  84 ++---
 pms.tex   |   4 +-
 profile-variables.tex |   8 +-
 profiles.tex  |  12 +--
 tree-layout.tex   |   4 +-
 14 files changed, 230 insertions(+), 214 deletions(-)

diff --git a/commands.tex b/commands.tex
index 799a20c..d0ad87d 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{7}
+\ChangeWhenAddingAnEAPI{8}
 \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 & Yes   & 2.7 \\
+  7, 8  & Yes   & 2.7 \\
   \bottomrule
 \end{tabular}
 \end{centertable}

diff --git a/dependencies.tex b/dependencies.tex
index 67855f5..3ef6fa6 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -82,7 +82,7 @@ as supporting \t{BDEPEND}, the build dependencies are split 
into two subclasses:
 dependency.
 \end{compactitem}
 
-\ChangeWhenAddingAnEAPI{7}
+\ChangeWhenAddingAnEAPI{8}
 \begin{centertable}{EAPIs supporting additional dependency types}
 \label{tab:depend-table}
 \begin{tabular}{ll}
@@ -91,7 +91,7 @@ as supporting \t{BDEPEND}, the build dependencies are split 
into two subclasses:
   \multicolumn{1}{c}{\textbf{Supports \t{BDEPEND}?}} \\
   \midrule
   0, 1, 2, 3, 4, 5, 6 & No  \\
-  7   & Yes \\
+  7, 8& Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -146,7 +146,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{7}
+\ChangeWhenAddingAnEAPI{8}
 \begin{centertable}{EAPIs supporting \t{REQUIRED_USE ??}\ groups}
 \label{tab:at-most-one-of-table}
 \begin{tabular}{ll}
@@ -155,7 +155,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   & Yes \\
+  5, 6, 7, 8& Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -195,7 +195,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{7}
+\ChangeWhenAddingAnEAPI{8}
 \begin{centertable}{Matching of empty dependency groups in EAPIs}
 \label{tab:empty-dep-groups}
 \begin{tabular}{ll}
@@ -205,7 +205,7 @@ being matched.
 are matched?}} \\
   \midrule
   0, 1, 2, 3, 4, 5, 6 & Yes \\
-  7   & No  \\
+  7, 8& No  \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -241,7 +241,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{7}
+\ChangeWhenAddingAnEAPI{8}
 \begin{centertable}{Support for \t{SLOT} dependencies and sub-slots in EAPIs}
 \label{tab:slot-deps-table}
 \begin{tabular}{lll}
@@ -252,12 +252,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   & Named and operator & Yes \\
+  5, 6, 7, 8& Named and operator & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{7}
+\ChangeWhenAddingAnEAPI{8}
 \begin{centertable}{EAPIs supporting \t{USE} dependencies}
 \label{tab:use-deps-table}
 \begin{tabular}{ll}
@@ -267,7 +267,7 @@ manager must warn or error if this feature is used with an 
EAPI not supporting u
   \midrule
   0, 1  & No  \\
   2, 3

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

2021-06-05 Thread Ulrich Müller
commit: 6603c18c63797076bf96cd28f603d1f6a4591f1b
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun May 23 14:37:05 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Jun  5 08:55:36 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=6603c18c

Rearrange listings of phase functions

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

 eapi-differences.tex |  10 ++--
 ebuild-functions.tex | 164 ---
 2 files changed, 82 insertions(+), 92 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 08c4e9f..842e09f 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -349,7 +349,7 @@ EAPI 1 is EAPI 0 with the following changes:
 \begin{compactitem}
 \item \t{IUSE} defaults, \featureref{iuse-defaults}.
 \item Slot dependencies, \featureref{slot-deps}.
-\item Different \t{src_compile} implementation, \featureref{src-compile-1}.
+\item Different \t{src_compile} implementation, \featureref{src-compile}.
 \end{compactitem}
 
 \section{EAPI 2}
@@ -362,7 +362,7 @@ EAPI 2 is EAPI 1 with the following changes:
 \item \t{!}\ and \t{!!}\ blockers, \featureref{bang-strength}.
 \item \t{src_prepare}, \featureref{src-prepare}.
 \item \t{src_configure}, \featureref{src-configure}.
-\item Different \t{src_compile} implementation, \featureref{src-compile-2}.
+\item Different \t{src_compile} implementation, \featureref{src-compile}.
 \item \t{default_} phase functions for phases \t{pkg_nofetch}, \t{src_unpack}, 
\t{src_prepare},
 \t{src_configure}, \t{src_compile} and \t{src_test}; 
\featureref{default-phase-funcs}.
 \item \t{doman} language detection by filename, \featureref{doman-langs}.
@@ -391,7 +391,7 @@ EAPI 4 is EAPI 3 with the following changes:
 \item Use dependency defaults, \featureref{use-dep-defaults}.
 \item \t{S} to \t{WORKDIR} fallback restricted, 
\featureref{s-workdir-fallback}.
 \item \t{pkg_pretend}, \featureref{pkg-pretend}.
-\item Default \t{src_install} no longer a no-op, \featureref{src-install-4}.
+\item Default \t{src_install} no longer a no-op, \featureref{src-install}.
 \item \t{pkg_info} can run on non-installed packages, \featureref{pkg-info}.
 \item \t{AA} is gone, \featureref{aa}.
 \item \t{KV} is gone, \featureref{kv}.
@@ -436,8 +436,8 @@ EAPI 6 is EAPI 5 with the following changes:
 \begin{compactitem}
 \item Bash version is 4.2, \featureref{bash-version}.
 \item \t{failglob} is enabled in global scope, \featureref{failglob}.
-\item Default \t{src_prepare} no longer a no-op, \featureref{src-prepare-6}.
-\item Different \t{src_install} implementation, \featureref{src-install-6}.
+\item Default \t{src_prepare} no longer a no-op, \featureref{src-prepare}.
+\item Different \t{src_install} implementation, \featureref{src-install}.
 \item \t{LC_CTYPE} and \t{LC_COLLATE} compatible with POSIX locale, 
\featureref{locale-settings}.
 \item \t{einstall} banned, \featureref{banned-commands}.
 \item \t{die} and \t{assert} called with \t{-n} respect \t{nonfatal}, 
\featureref{nonfatal-die}.

diff --git a/ebuild-functions.tex b/ebuild-functions.tex
index 00fd259..b224e0b 100644
--- a/ebuild-functions.tex
+++ b/ebuild-functions.tex
@@ -120,10 +120,10 @@ The \t{src_unpack} function extracts all of the package's 
sources. In EAPIs lack
 \t{src_prepare}, it may also apply patches and set up the package's build 
system for further use.
 
 The initial working directory must be \t{WORKDIR}, and the default 
implementation used when
-the ebuild lacks the \t{src_unpack} function shall behave as:
+the ebuild lacks the \t{src_unpack} function shall behave as in 
listing~\ref{lst:src-unpack-0}.
 
 \begin{listing}[H]
-\caption{\t{src_unpack}}
+\caption{\t{src_unpack}} \label{lst:src-unpack-0}
 \begin{verbatim}
 src_unpack() {
 if [[ -n ${A} ]]; then
@@ -142,23 +142,9 @@ post-unpack source preparation.
 The initial working directory is \t{S}, with an error or fallback to 
\t{WORKDIR} as discussed in
 section~\ref{sec:s-to-workdir-fallback}.
 
-\featurelabel{src-prepare-6} For EAPIs listed in 
table~\ref{tab:src-prepare-table} as using format
-6, the default implementation used when the ebuild lacks the \t{src_prepare} 
function shall behave
-as:
-
-\begin{listing}[H]
-\caption{\t{src_prepare}, format~6}
-\begin{verbatim}
-src_prepare() {
-if [[ $(declare -p PATCHES 2>/dev/null) == "declare -a"* ]]; then
-[[ -n ${PATCHES[@]} ]] && eapply "${PATCHES[@]}"
-else
-[[ -n ${PATCHES} ]] && eapply ${PATCHES}
-fi
-eapply_user
-}
-\end{verbatim}
-\end{listing}
+For EAPIs listed in table~\ref{tab:src-prepare-table} as using format~6, the 
default
+implementation used when the ebuild lacks the \t{src_prepare} function shall 
behave as in
+listing~\ref{lst:src-prepare-6}.
 
 For other EAPIs supporting \t{src_prepare}, the default implementation used 
when the ebuild lacks
 the \t{src_prepare} function is a no-op.
@@ -179,6 +165,20 @@ the \t{src_prepare} function is a no-op.
 

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

2021-06-05 Thread Ulrich Müller
commit: 687c810ecada6066baceca316039a92bd3961fbd
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun May 23 09:45:56 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Jun  5 08:55:36 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=687c810e

EAPI 8 has an empty working directory in pkg_* phases

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

 eapi-differences.tex |  4 
 ebuild-functions.tex | 26 +-
 2 files changed, 25 insertions(+), 5 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index f3af563..08c4e9f 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -111,6 +111,9 @@ Use dependencies & \compactfeatureref{use-deps} &
 \t{!!}\ blockers & \compactfeatureref{bang-strength} &
 * & Strong & Strong & Strong & Strong \\
 
+Working directory in \t{pkg_*} phases & \compactfeatureref{phase-function-dir} 
&
+Any & Any & Any & Any & Empty \\
+
 \t{S} to \t{WORKDIR} fallback & \compactfeatureref{s-workdir-fallback} &
 * & Conditional & Conditional & Conditional & Conditional \\
 
@@ -494,6 +497,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item Bash version is 5.0, \featureref{bash-version}.
 \item Selective fetch/mirror restriction, \featureref{uri-restrict}.
 \item \t{IDEPEND}, \featureref{idepend}.
+\item Empty working directory in \t{pkg_*} phase functions, 
\featureref{phase-function-dir}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/ebuild-functions.tex b/ebuild-functions.tex
index ffdea16..00fd259 100644
--- a/ebuild-functions.tex
+++ b/ebuild-functions.tex
@@ -22,11 +22,13 @@ Ebuilds must not call nor assume the existence of any phase 
functions.
 \subsection{Initial working directories}
 \label{sec:s-to-workdir-fallback}
 
-Some functions may assume that their initial working directory is set to a 
particular location;
-these are noted below. If no initial working directory is mandated, it may be 
set to anything and
-the ebuild must not rely upon a particular location for it. The ebuild 
\emph{may} assume that the
-initial working directory for any phase is a trusted location that may only be 
written to by a
-privileged user and group.
+\featurelabel{phase-function-dir} Some functions may assume that their initial 
working directory is
+set to a particular location; these are noted below. If no initial working 
directory is mandated,
+then for EAPIs listed in table~\ref{tab:function-dirs} as having an empty 
directory, it must be set
+to a dedicated directory that is empty at the start of the function and may be 
read-only. For other
+EAPIs, it may be set to anything. The ebuild must not rely upon a particular 
location for it.
+The ebuild \emph{may} assume that the initial working directory for any phase 
is a trusted location
+that may only be written to by a privileged user and group.
 
 \featurelabel{s-workdir-fallback} Some functions are described as having an 
initial working
 directory of \t{S} with an error or fallback to \t{WORKDIR}\@. For EAPIs 
listed in
@@ -44,6 +46,20 @@ fallback to \t{WORKDIR} is used:
 executed, are in \t{DEFINED_PHASES}.
 \end{compactitem}
 
+\ChangeWhenAddingAnEAPI{8}
+\begin{centertable}{Initial working directory in \t{pkg_*} phase functions for 
EAPIs}
+\label{tab:function-dirs}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Initial working directory?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7  & Any   \\
+  8   & Empty \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \ChangeWhenAddingAnEAPI{8}
 \begin{centertable}{EAPIs with \t{S} to \t{WORKDIR} fallbacks}
 \label{tab:s-fallback-table}



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

2021-06-05 Thread Ulrich Müller
commit: 3b55b43b16c79e90af9cd99e9a71e469b988922a
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun Nov  5 18:04:28 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Jun  5 08:55:34 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=3b55b43b

EAPI 8: Bash version is 5.0

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

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index b89ede0..a334881 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -57,7 +57,7 @@ Stable use masking/forcing & \compactfeatureref{stablemask} &
 No & Yes & Yes & Yes & Yes \\
 
 Bash version & \compactfeatureref{bash-version} &
-3.2 & 3.2 & 4.2 & 4.2 & 4.2 \\
+3.2 & 3.2 & 4.2 & 4.2 & 5.0 \\
 
 \t{failglob} in global scope & \compactfeatureref{failglob} &
 No & No & Yes & Yes & Yes \\
@@ -485,6 +485,7 @@ EAPI 8 is EAPI 7 with the following changes:
 
 \begin{compactitem}
 \item Less strict naming rules for files in \t{updates} directory, 
\featureref{updates-filenames}.
+\item Bash version is 5.0, \featureref{bash-version}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/ebuild-format.tex b/ebuild-format.tex
index c2224bf..4929ba4 100644
--- a/ebuild-format.tex
+++ b/ebuild-format.tex
@@ -26,7 +26,8 @@ output or standard error, or modify the state of the system 
in any way.
   \multicolumn{1}{c}{\textbf{\t{failglob} in global scope?}} \\
   \midrule
   0, 1, 2, 3, 4, 5  & 3.2 & No  \\
-  6, 7, 8   & 4.2 & Yes \\
+  6, 7  & 4.2 & Yes \\
+  8 & 5.0 & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2021-06-05 Thread Ulrich Müller
commit: 3f93cb5890b64d642a68aafa3997abe9dda46a10
Author: Ulrich Müller  gentoo  org>
AuthorDate: Tue May 25 15:59:13 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Jun  5 08:55:34 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=3f93cb58

Ban nameref variables from exported and default scope

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

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

diff --git a/ebuild-format.tex b/ebuild-format.tex
index 4929ba4..25ba28e 100644
--- a/ebuild-format.tex
+++ b/ebuild-format.tex
@@ -11,6 +11,8 @@ compatibility settings (e.\,g.\ the \t{BASH_COMPAT} variable) 
are not exported t
 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.
 
+Name reference variables (introduced in bash version~4.3) must not be used, 
except in local scope.
+
 The file encoding must be UTF-8 with Unix-style newlines. When sourced, the 
ebuild must define
 certain variables and functions (see chapters~\ref{ch:ebuild-vars} 
and~\ref{ch:ebuild-functions}
 for specific information), and must not call any external programs, write 
anything to standard



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

2021-06-05 Thread Ulrich Müller
commit: 11ffdd5a32b9bed132486efb939997b8749fbf9d
Author: Michał Górny  gentoo  org>
AuthorDate: Sun Dec 22 20:32:41 2019 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Jun  5 08:55:35 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=11ffdd5a

EAPI 8 has install-time dependencies (IDEPEND)

Bug: https://bugs.gentoo.org/660306
Signed-off-by: Michał Górny  gentoo.org>
[Updated as discussed in -pms mailing list]
Signed-off-by: Ulrich Müller  gentoo.org>

 dependencies.tex | 25 +
 eapi-differences.tex |  4 
 ebuild-env-vars.tex  |  5 +++--
 ebuild-vars.tex  |  1 +
 eclasses.tex | 10 +-
 metadata-cache.tex   |  2 ++
 6 files changed, 32 insertions(+), 15 deletions(-)

diff --git a/dependencies.tex b/dependencies.tex
index 3ef6fa6..f14a08c 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -21,7 +21,7 @@
   \t{src_install} & \t{DEPEND}, \t{BDEPEND} \\
   \addlinespace
   \t{pkg_preinst}, \t{pkg_postinst}, \t{pkg_prerm}, \t{pkg_postrm} &
-  \t{RDEPEND} \\
+  \t{RDEPEND}, \t{IDEPEND} \\
   \addlinespace
   \t{pkg_config} & \t{RDEPEND}, \t{PDEPEND} \\
   \bottomrule
@@ -32,7 +32,7 @@
 \label{tab:dep-class-api}
 \begin{tabular}{}
   \toprule
-& \t{BDEPEND} & \t{DEPEND} & 
\t{RDEPEND}, \t{PDEPEND} \\
+   & \t{BDEPEND}, \t{IDEPEND} & \t{DEPEND} & 
\t{RDEPEND}, \t{PDEPEND} \\
   \midrule
   Binary compatible with& \t{CBUILD}  & \t{CHOST}  & 
\t{CHOST} \\
   Base unprefixed path  & \t{/}   & \t{\$\{SYSROOT\}}  & 
\t{\$\{ROOT\}}\\
@@ -82,16 +82,24 @@ as supporting \t{BDEPEND}, the build dependencies are split 
into two subclasses:
 dependency.
 \end{compactitem}
 
+\featurelabel{idepend} Additionally, in EAPIs listed in 
table~\ref{tab:depend-table} as supporting
+\t{IDEPEND}, install-time dependencies can be specified. These dependencies 
are binary compatible
+with the native build system (\t{CBUILD}). Ebuilds are allowed to call them in 
\t{pkg_preinst} and
+\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}
 \begin{centertable}{EAPIs supporting additional dependency types}
 \label{tab:depend-table}
-\begin{tabular}{ll}
+\begin{tabular}{lll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{1}{c}{\textbf{Supports \t{BDEPEND}?}} \\
+  \multicolumn{1}{c}{\textbf{Supports \t{BDEPEND}?}} &
+  \multicolumn{1}{c}{\textbf{Supports \t{IDEPEND}?}} \\
   \midrule
-  0, 1, 2, 3, 4, 5, 6 & No  \\
-  7, 8& Yes \\
+  0, 1, 2, 3, 4, 5, 6 & No  & No  \\
+  7   & Yes & No  \\
+  8   & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -111,7 +119,7 @@ be surrounded on both sides by whitespace, except at the 
start and end of the st
 
 \begin{compactitem}
 \item A package dependency specification. Permitted in \t{DEPEND}, 
\t{BDEPEND}, \t{RDEPEND},
-\t{PDEPEND}.
+\t{PDEPEND}, \t{IDEPEND}.
 \item A URI, in the form \t{proto://host/path}. Permitted in \t{HOMEPAGE} and 
\t{SRC_URI}\@.
 In EAPIs listed in table~\ref{tab:uri-arrows-table} as supporting 
\t{SRC_URI} arrows, may
 optionally be followed by whitespace, then \t{->}, then whitespace, then a 
simple filename when
@@ -129,7 +137,8 @@ be surrounded on both sides by whitespace, except at the 
start and end of the st
 followed by an open parenthesis, followed by whitespace, followed by one 
or more
 of (a dependency item of any kind followed by whitespace), followed by a 
close parenthesis.
 More formally: \t{any-of} \t{::=} \t{'||' whitespace '(' whitespace (item 
whitespace)+ ')'}.
-Permitted in \t{DEPEND}, \t{BDEPEND}, \t{RDEPEND}, \t{PDEPEND}, 
\t{LICENSE}, \t{REQUIRED_USE}.
+Permitted in \t{DEPEND}, \t{BDEPEND}, \t{RDEPEND}, \t{PDEPEND}, 
\t{IDEPEND}, \t{LICENSE},
+\t{REQUIRED_USE}.
 \item An exactly-one-of group, which has the same format as the any-of group, 
but begins with the
 string \t{\textasciicircum\textasciicircum} instead. Permitted in 
\t{REQUIRED_USE}.
 \item \featurelabel{at-most-one-of} An at-most-one-of group, which has the 
same format as the

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 22f99e2..f3af563 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -86,6 +86,9 @@ Selective URI restrictions & \compactfeatureref{uri-restrict} 
&
 \t{BDEPEND} & \compactfeatureref{bdepend} &
 No & No & No & Yes & Yes \\
 
+\t{IDEPEND} & \compactfeatureref{idepend} &
+No & No & No & No & Yes \\
+
 \t{??\ ( )} groups & \compactfeatureref{at-most-one-of} &
 No & Yes & Yes & Yes & Yes \\
 
@@ -490,6 +493,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item Less 

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

2021-06-05 Thread Ulrich Müller
commit: 52a242e2f7923f3bee9978ffb14741fa25da9c14
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun May 16 18:46:09 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Jun  5 08:55:37 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=52a242e2

EAPI 8 accumulates PROPERTIES and RESTRICT across eclasses

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

 eapi-differences.tex |  4 
 eclasses.tex | 27 ++-
 2 files changed, 26 insertions(+), 5 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index aeddb6e..c7af2b3 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -152,6 +152,9 @@ Parallel tests & \compactfeatureref{parallel-tests} &
 \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
 \t{src_compile}, \t{src_test}, \t{src_install} \\
 
+Accumulate \t{RESTRICT} etc. & \compactfeatureref{accumulate-vars} &
+No & No & No & No & Yes \\
+
 \t{AA} & \compactfeatureref{aa} &
 * & No & No & No & No \\
 
@@ -499,6 +502,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{IDEPEND}, \featureref{idepend}.
 \item Empty working directory in \t{pkg_*} phase functions, 
\featureref{phase-function-dir}.
 \item Different \t{src_prepare} implementation, \featureref{src-prepare}.
+\item \t{PROPERTIES} and \t{RESTRICT} accumulated across eclasses, 
\featureref{accumulate-vars}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/eclasses.tex b/eclasses.tex
index 7f4ba67..a92ce1f 100644
--- a/eclasses.tex
+++ b/eclasses.tex
@@ -34,11 +34,28 @@ The \t{inherit} command must also ensure that:
 
 \section{Eclass-defined Metadata Keys}
 
-The \t{IUSE}, \t{REQUIRED_USE}, \t{DEPEND}, \t{BDEPEND}, \t{RDEPEND}, 
\t{PDEPEND} and \t{IDEPEND}
-variables are handled specially when set by an eclass. They must be 
accumulated across eclasses,
-appending the value set by each eclass to the resulting value after the 
previous one is loaded.
-Then the eclass-defined value is appended to that defined by the ebuild. In 
the case of \t{RDEPEND},
-this is done after the implicit \t{RDEPEND} rules in 
section~\ref{sec:rdepend-depend} are applied.
+\featurelabel{accumulate-vars} The \t{IUSE}, \t{REQUIRED_USE}, \t{DEPEND}, 
\t{BDEPEND}, \t{RDEPEND},
+\t{PDEPEND} and \t{IDEPEND} variables are handled specially when set by an 
eclass. They must be
+accumulated across eclasses, appending the value set by each eclass to the 
resulting value after
+the previous one is loaded. For EAPIs listed in 
table~\ref{tab:accumulate-vars} as accumulating
+\t{PROPERTIES} and \t{RESTRICT}, the same is true for these variables. Then 
the eclass-defined
+value is appended to that defined by the ebuild. In the case of \t{RDEPEND}, 
this is done after
+the implicit \t{RDEPEND} rules in section~\ref{sec:rdepend-depend} are applied.
+
+\ChangeWhenAddingAnEAPI{8}
+\begin{centertable}{EAPIs accumulating \t{PROPERTIES} and \t{RESTRICT} across 
eclasses}
+\label{tab:accumulate-vars}
+\begin{tabular}{lll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Accumulates \t{PROPERTIES}?}} &
+  \multicolumn{1}{c}{\textbf{Accumulates \t{RESTRICT}?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7  & No  & No  \\
+  8   & Yes & Yes \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
 
 \section{EXPORT_FUNCTIONS}
 



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

2021-06-05 Thread Ulrich Müller
commit: 2efc05522c75de6dd8e28425515b0501f8559da7
Author: Michał Górny  gentoo  org>
AuthorDate: Sun Dec 22 18:23:57 2019 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Jun  5 08:55:35 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=2efc0552

EAPI 8 has selective URI restrictions

Bug: https://bugs.gentoo.org/371413
Signed-off-by: Michał Górny  gentoo.org>
[Shortened "selective-uri-restrict" label to make it fit in the margin]
Signed-off-by: Ulrich Müller  gentoo.org>

 eapi-differences.tex |  4 
 ebuild-vars.tex  | 18 +-
 2 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index a334881..22f99e2 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -74,6 +74,9 @@ Bash version & \compactfeatureref{bash-version} &
 \t{SRC_URI} arrows & \compactfeatureref{src-uri-arrows} &
 * & Yes & Yes & Yes & Yes \\
 
+Selective URI restrictions & \compactfeatureref{uri-restrict} &
+No & No & No & No & Yes \\
+
 \t{RDEPEND=DEPEND} & \compactfeatureref{rdepend-depend} &
 * & No & No & No & No \\
 
@@ -486,6 +489,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \begin{compactitem}
 \item Less strict naming rules for files in \t{updates} directory, 
\featureref{updates-filenames}.
 \item Bash version is 5.0, \featureref{bash-version}.
+\item Selective fetch/mirror restriction, \featureref{uri-restrict}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index 040b02a..f6b1c26 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -169,16 +169,24 @@ on the right of the arrow. When consulting mirrors 
(except for those explicitly
 of the arrow, if \t{mirror://} is used), the filename to the right of the 
arrow shall be requested
 instead of the filename in the URI.
 
+\featurelabel{uri-restrict} In EAPIs listed in 
table~\ref{tab:uri-arrows-table} as supporting
+selective URI restrictions, the URI protocol can be prefixed by an additional 
\t{fetch+} or
+\t{mirror+} term. If the ebuild is fetch restricted, the \t{fetch+} prefix 
undoes the fetch
+restriction for the URI (but not the implied mirror restriction). If the 
ebuild is fetch or mirror
+restricted, the \t{mirror+} prefix undoes both fetch and mirror restrictions 
for the URI.
+
 \ChangeWhenAddingAnEAPI{8}
-\begin{centertable}{EAPIs supporting \t{SRC_URI} arrows}
+\begin{centertable}{EAPIs supporting \t{SRC_URI} arrows and selective URI 
restrictions}
 \label{tab:uri-arrows-table}
-\begin{tabular}{ll}
+\begin{tabular}{lll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{1}{c}{\textbf{Supports \t{SRC_URI} arrows?}} \\
+  \multicolumn{1}{c}{\textbf{Supports \t{SRC_URI} arrows?}} &
+  \multicolumn{1}{c}{\textbf{Supports selective URI restrictions?}} \\
   \midrule
-  0, 1& No  \\
-  2, 3, 4, 5, 6, 7, 8 & Yes \\
+  0, 1  & No  & No  \\
+  2, 3, 4, 5, 6, 7  & Yes & No  \\
+  8 & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2021-06-05 Thread Ulrich Müller
commit: 1bf3b37024383409a54792088a4f84ffb2738c69
Author: Ulrich Müller  gentoo  org>
AuthorDate: Thu May 10 17:17:19 2018 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Jun  5 08:55:32 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=1bf3b370

EAPI feature table: Consolidate EAPIs 0 to 4

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

 eapi-differences.tex | 191 +--
 1 file changed, 93 insertions(+), 98 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index d5513c3..38109ec 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -1,23 +1,22 @@
 \chapter{Feature Availability by EAPI}
 
 \note{This chapter is informative and for convenience only. Refer to the main 
text for specifics.
-For lack of space, EAPIs 0, 1, 2, and~3 have been consolidated into a single 
column in the table
+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
 
 \ChangeWhenAddingAnEAPI{8}
 \begin{landscape}
-\begin{longtable}{llP{7.5em}P{7.5em}P{7.5em}P{7.5em}P{7.5em}P{7.5em}}
+\begin{longtable}{llP{7.5em}P{7.5em}P{7.5em}P{7.5em}P{7.5em}}
 \caption{Features in EAPIs}\\
 \toprule
 \multicolumn{1}{c}{\textbf{Feature}} &
 \multicolumn{1}{c}{\textbf{Reference}} &
-\multicolumn{6}{c}{\textbf{EAPIs}} \\
+\multicolumn{5}{c}{\textbf{EAPIs}} \\
 \multicolumn{1}{c}{} &
 \multicolumn{1}{c}{} &
-\multicolumn{1}{c}{0, 1, 2, 3} &
-\multicolumn{1}{c}{4} &
+\multicolumn{1}{c}{0, 1, 2, 3, 4} &
 \multicolumn{1}{c}{5} &
 \multicolumn{1}{c}{6} &
 \multicolumn{1}{c}{7} &
@@ -27,11 +26,10 @@ of this document for a complete table of previous EAPIs.}
 \midrule
 \multicolumn{1}{c}{\textbf{Feature}} &
 \multicolumn{1}{c}{\textbf{Reference}} &
-\multicolumn{6}{c}{\textbf{EAPIs}} \\
+\multicolumn{5}{c}{\textbf{EAPIs}} \\
 \multicolumn{1}{c}{} &
 \multicolumn{1}{c}{} &
-\multicolumn{1}{c}{0, 1, 2, 3} &
-\multicolumn{1}{c}{4} &
+\multicolumn{1}{c}{0, 1, 2, 3, 4} &
 \multicolumn{1}{c}{5} &
 \multicolumn{1}{c}{6} &
 \multicolumn{1}{c}{7} &
@@ -44,92 +42,92 @@ of this document for a complete table of previous EAPIs.}
 \endlastfoot
 
 \t{package.mask} directory & \compactfeatureref{package-mask-dir} &
-No & No & No & No & Yes & Yes \\
+No & No & No & Yes & Yes \\
 
 Profile files as directories & \compactfeatureref{profile-file-dirs} &
-No & No & No & No & Yes & Yes \\
+No & No & No & Yes & Yes \\
 
 \t{package.provided} & \compactfeatureref{package-provided} &
-Optional & Optional & Optional & Optional & No & No \\
+Optional & Optional & Optional & No & No \\
 
 Stable use masking/forcing & \compactfeatureref{stablemask} &
-No & No & Yes & Yes & Yes & Yes \\
+No & Yes & Yes & Yes & Yes \\
 
 Bash version & \compactfeatureref{bash-version} &
-3.2 & 3.2 & 3.2 & 4.2 & 4.2 & 4.2 \\
+3.2 & 3.2 & 4.2 & 4.2 & 4.2 \\
 
 \t{failglob} in global scope & \compactfeatureref{failglob} &
-No & No & No & Yes & Yes & Yes \\
+No & No & Yes & Yes & Yes \\
 
 \t{IUSE} defaults & \compactfeatureref{iuse-defaults} &
-* & Yes & Yes & Yes & Yes & Yes \\
+* & Yes & Yes & Yes & Yes \\
 
 \t{REQUIRED_USE} & \compactfeatureref{required-use} &
-No & Yes & Yes & Yes & Yes & Yes \\
+* & Yes & Yes & Yes & Yes \\
 
 \t{PROPERTIES} & \compactfeatureref{properties} &
-Optionally & Yes & Yes & Yes & Yes & Yes \\
+* & Yes & Yes & Yes & Yes \\
 
 \t{SRC_URI} arrows & \compactfeatureref{src-uri-arrows} &
-* & Yes & Yes & Yes & Yes & Yes \\
+* & Yes & Yes & Yes & Yes \\
 
 \t{RDEPEND=DEPEND} & \compactfeatureref{rdepend-depend} &
-Yes & No & No & No & No & No \\
+* & No & No & No & No \\
 
 \t{DEFINED_PHASES} & \compactfeatureref{defined-phases} &
-Optionally & Yes & Yes & Yes & Yes & Yes \\
+* & Yes & Yes & Yes & Yes \\
 
 \t{BDEPEND} & \compactfeatureref{bdepend} &
-No & No & No & No & Yes & Yes \\
+No & No & No & Yes & Yes \\
 
 \t{??\ ( )} groups & \compactfeatureref{at-most-one-of} &
-No & No & Yes & Yes & Yes & Yes \\
+No & Yes & Yes & Yes & Yes \\
 
 Empty \t{||}, \t{\textasciicircum\textasciicircum} groups match &
 \compactfeatureref{empty-dep-groups} &
-Yes & Yes & Yes & Yes & No & No \\
+Yes & Yes & Yes & No & No \\
 
 Slot dependencies & \compactfeatureref{slot-deps} &
-* & Named & Named and Operator & Named and Operator & Named and Operator & 
Named and Operator \\
+* & Named and Operator & Named and Operator & Named and Operator & Named 
and Operator \\
 
 Sub-slots & \compactfeatureref{sub-slot} &
-No & No & Yes & Yes & Yes & Yes \\
+No & Yes & Yes & Yes & Yes \\
 
 Use dependencies & \compactfeatureref{use-deps} &
-* & 4-style & 4-style & 4-style & 4-style & 4-style \\
+  

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

2021-06-05 Thread Ulrich Müller
commit: 03aa761dea35f98a221270274b14f7e97e0ffa6f
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sat Jan 16 12:00:11 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Jun  5 08:55:33 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=03aa761d

Relicense from CC-BY-SA-3.0 to CC-BY-SA-4.0

Acked-by: Michał Górny  gentoo.org>
Signed-off-by: Ulrich Müller  gentoo.org>

 eapi-cheatsheet.tex | 4 ++--
 pms.tex | 5 +++--
 2 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/eapi-cheatsheet.tex b/eapi-cheatsheet.tex
index d4abb1a..83ddfa7 100644
--- a/eapi-cheatsheet.tex
+++ b/eapi-cheatsheet.tex
@@ -73,8 +73,8 @@
 % to the original author or the PMS team.
 
 This work is released under the Creative Commons
-Attribution-Share Alike 3.0 Licence.%
-\footnote{\url{https://creativecommons.org/licenses/by-sa/3.0/}}
+Attribution-ShareAlike 4.0 International Licence.%
+\footnote{\url{https://creativecommons.org/licenses/by-sa/4.0/}}
 \end{abstract}
 
 \section{EAPIs 0, 1, 2, 3, and 4}

diff --git a/pms.tex b/pms.tex
index f54b1a0..8bbd037 100644
--- a/pms.tex
+++ b/pms.tex
@@ -34,8 +34,9 @@
 \textcopyright{} 2007--2021 Stephen Bennett, Ciaran McCreesh and others. 
Contributions are owned
 by their respective authors, and may have been changed substantially 
before inclusion.
 
-This document is released under the Creative Commons 
Attribution-ShareAlike 3.0 Licence. The
-full text of this licence can be found at 
\url{https://creativecommons.org/licenses/by-sa/3.0/}.
+This work is released under the Creative Commons Attribution-ShareAlike 
4.0 International
+Licence. To~view a copy of this licence, visit
+\url{https://creativecommons.org/licenses/by-sa/4.0/}.
 
 \commitinfo
 }



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

2021-06-05 Thread Ulrich Müller
commit: 2044073eecade023bb335c5b44a49845e34d4404
Author: Ulrich Müller  gentoo  org>
AuthorDate: Thu May 10 17:19:32 2018 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Jun  5 08:55:32 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=2044073e

eapis.tex: Merge redundant descriptions

Drop footnote about EAPI kdebuild-1.

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

 eapis.tex | 21 -
 1 file changed, 4 insertions(+), 17 deletions(-)

diff --git a/eapis.tex b/eapis.tex
index 746decf..a6c8109 100644
--- a/eapis.tex
+++ b/eapis.tex
@@ -17,26 +17,13 @@ EAPIs are also used for profile directories, as described 
in section~\ref{sec:pr
 
 \section{Defined EAPIs}
 
-The following EAPIs are defined by this specification:
-
 \ChangeWhenAddingAnEAPI{8}
-\begin{compactdesc}
-\item[0] The `original' base EAPI.
-\item[1] EAPI `1' contains a number of extensions to EAPI `0'.
-\item[2] EAPI `2' contains a number of extensions to EAPI `1'.
-\item[3] EAPI `3' contains a number of extensions to EAPI `2'.
-\item[4] EAPI `4' contains a number of extensions to EAPI `3'.
-\item[5] EAPI `5' contains a number of extensions to EAPI `4'.
-\item[6] EAPI `6' contains a number of extensions to EAPI `5'.
-\item[7] EAPI `7' contains a number of extensions to EAPI `6'.
-\item[8] EAPI `8' contains a number of extensions to EAPI `7'.
-\end{compactdesc}
+This specification defines EAPIs `0', `1', `2', `3', `4', `5', `6', `7', 
and~`8'.
+EAPI~`0' is the `original' base EAPI\@. Each of the later EAPIs contains a 
number of extensions
+to its predecessor.
 
 Except where explicitly noted, everything in this specification
-applies to all of the above EAPIs.%
-\footnote{Another unofficial EAPI `kdebuild-1' was a series of
-extensions to EAPI `1' formerly used by the Gentoo KDE project.
-Some of its features have been included in EAPI `2' or later.}
+applies to all of the above EAPIs.
 
 \section{Reserved EAPIs}
 



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

2021-06-05 Thread Ulrich Müller
commit: a14e130eacbd19fb8e835d2d385ac94ba693f23a
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun May 16 16:44:50 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Jun  5 08:55:33 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=a14e130e

EAPI 8 has less strict naming rules in the updates directory

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

 eapi-differences.tex |  5 -
 tree-layout.tex  | 25 +
 2 files changed, 25 insertions(+), 5 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 38109ec..b89ede0 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -44,6 +44,9 @@ of this document for a complete table of previous EAPIs.}
 \t{package.mask} directory & \compactfeatureref{package-mask-dir} &
 No & No & No & Yes & Yes \\
 
+Less strict filenames in \t{updates} & \compactfeatureref{updates-filenames} &
+No & No & No & No & Yes \\
+
 Profile files as directories & \compactfeatureref{profile-file-dirs} &
 No & No & No & Yes & Yes \\
 
@@ -481,7 +484,7 @@ EAPI 7 is EAPI 6 with the following changes:
 EAPI 8 is EAPI 7 with the following changes:
 
 \begin{compactitem}
-\item None
+\item Less strict naming rules for files in \t{updates} directory, 
\featureref{updates-filenames}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/tree-layout.tex b/tree-layout.tex
index 81599a9..aa04d3d 100644
--- a/tree-layout.tex
+++ b/tree-layout.tex
@@ -207,11 +207,14 @@ differs from that described in \t{use.desc}.
 
 \subsection{The updates directory}
 \label{sec:updates-dir}
-The \t{updates} directory is used to inform the package manager that a package 
has moved categories,
-names, or that a version has changed SLOT\@. It contains one file per quarter 
year, named
+\featurelabel{updates-filenames} The \t{updates} directory is used to inform 
the package manager
+that a package has moved categories, names, or that a version has changed 
SLOT\@. For EAPIs
+so specified by table~\ref{tab:updates-filenames}, it contains one file per 
quarter year, named
 \t{[1-4]Q-[]} for the first to fourth quarter of a given year, for example 
\t{1Q-2004} or
-\t{3Q-2006}. The format of each file is again line-based, with each line 
having one of the following
-formats:
+\t{3Q-2006}. For other EAPIs, all regular files in this directory will be 
processed, unless their
+name begins with a dot.
+
+The format of each file is again line-based, with each line having one of the 
following formats:
 \begin{verbatim}
 move  
 slotmove   
@@ -230,6 +233,20 @@ Any name that has appeared as the origin of a move must 
not be reused in the fut
 that has appeared as the origin of a slot move may not be used by packages 
matching the spec of
 that slot move in the future.
 
+\ChangeWhenAddingAnEAPI{8}
+\begin{centertable}{Naming rules for files in \t{updates} directory for EAPIs}
+\label{tab:updates-filenames}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Files per quarter year?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7  & Yes \\
+  8   & No  \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \section{The Licenses Directory}
 \label{sec:licenses-dir}
 



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

2021-06-03 Thread Ulrich Müller
commit: 5aa8c120a81e2042411b9e3620f81d1dad8fb657
Author: Ulrich Müller  gentoo  org>
AuthorDate: Wed May 26 20:12:09 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Wed Jun  2 23:08:14 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=5aa8c120

Cheat sheet: Remove EAPI 5 to make room for EAPI 8

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

 eapi-cheatsheet.tex | 140 ++--
 1 file changed, 70 insertions(+), 70 deletions(-)

diff --git a/eapi-cheatsheet.tex b/eapi-cheatsheet.tex
index fb62827..82602f2 100644
--- a/eapi-cheatsheet.tex
+++ b/eapi-cheatsheet.tex
@@ -77,7 +77,7 @@
 \footnote{\url{https://creativecommons.org/licenses/by-sa/4.0/}}
 \end{abstract}
 
-\section{EAPIs 0, 1, 2, 3, and 4}
+\section{EAPIs 0, 1, 2, 3, 4, and 5}
 \label{sec:cs:eapi0-2}
 Omitted for lack of space. See version~5.0 of this document for
 differences between these previous EAPIs.
@@ -257,75 +257,75 @@ differences between these previous EAPIs.
 % any more.  See \featureref{aa} and \featureref{kv}.
 % \end{description}
 
-\section{EAPI 5 (2012-09-20)}
-\label{sec:cs:eapi5}
-\subsection{Additions/Changes}
-\label{sec:cs:eapi5-additions}
-\begin{description}
-\item[Sub-slots] The \code{SLOT} variable and slot dependencies
-may contain an optional sub-slot part that follows the regular
-slot, delimited by a \code{/} character; for example
-\code{2/2.30}.  The sub-slot is used to represent cases in which
-an upgrade to a new version of a package with a different sub-slot
-may require dependent packages to be rebuilt.  If the sub-slot is
-not specified in \code{SLOT}, it defaults to the regular slot.
-See \featureref{sub-slot}.
-\item[Slot operator dependencies] Package dependencies can specify
-one of the following operators as a suffix, which will affect
-updates of runtime dependencies:
-\begin{description}
-\item[\code{:*}] Any slot value is acceptable.  The package
-will not break when its dependency is updated.
-\item[\code{:=}] Any slot value is acceptable, but the package
-can break when its dependency is updated to a different slot
-(or sub-slot).
-\end{description}
-See \featureref{slot-operator-deps}.
-\item[Profile \code{IUSE} injection] Apart from the USE flags
-explicitly listed in \code{IUSE}, additional flags can be
-implicitly provided by profiles.
-See \featureref{profile-iuse-inject}.
-\item[At-most-one-of groups] In \code{REQUIRED_USE} you can use
-"\code{??\ ( flag1 flag2 \dots\ )}" to allow zero or one USE flag
-out of many.
-See \featureref{at-most-one-of}.
-\item[Parallel tests] The default for \code{src_test} runs
-\code{emake} without \code{-j1} now.
-See \featureref{parallel-tests}.
-\item[\code{econf} changes] The \code{econf} function now always
-passes \code{-{}-disable-silent-rules} to \code{configure}.
-See \featureref{econf-options}.
-\item[\code{has_version} and \code{best_version} changes]
-The two helpers support a \code{-{}-host-root} option that causes
-the query to apply to the host root instead of \code{ROOT}.
-See~\featureref{pm-query-options}.
-\item[\code{usex}] Usage for this helper function is
-\code{usex} \emph{ [true1] [false1] [true2] [false2]}.
-If the USE flag is set, outputs \emph{[true1][true2]}
-(defaults to \code{yes}), otherwise outputs
-\emph{[false1][false2]} (defaults to \code{no}).
-See \featureref{usex}.
-\item[\code{doheader} and \code{newheader}] These new helper
-functions install the given header file(s) into
-\code{/usr/include}. The \code{-r} option enables recursion for
-\code{doheader}, similar to \code{doins}.
-See \featureref{doheader}.
-\item[\code{new*} standard input] The \code{newins} etc.\ commands
-read from standard input if the first argument is \code{-}
-(a hyphen).
-See \featureref{newfoo-stdin}.
-\item[\code{EBUILD_PHASE_FUNC}] This variable is very similar to
-\code{EBUILD_PHASE}, but contains the name of the current ebuild
-function.
-See \featureref{ebuild-phase-func}.
-\item[Stable use masking/forcing] New files
-\code{use.stable.\allowbreak\{mask,force\}} and
-\code{package.use.stable.\allowbreak\{mask,force\}}
-are supported in profile directories.  They are similar to their
-non-\code{stable} counterparts, but act only on packages that
-would be merged due to a stable keyword.
-See \featureref{stablemask}.
-\end{description}
+% \section{EAPI 5 (2012-09-20)}
+% \label{sec:cs:eapi5}
+% \subsection{Additions/Changes}
+% \label{sec:cs:eapi5-additions}
+% \begin{description}
+% \item[Sub-slots] The \code{SLOT} variable and slot dependencies
+% may contain an optional sub-slot part that follows the regular
+% slot, delimited by a \code{/} character; for example
+% 

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

2021-06-03 Thread Ulrich Müller
commit: e0f239a664b1c0103368379f5348d9283ae57329
Author: Ulrich Müller  gentoo  org>
AuthorDate: Wed May 26 20:11:32 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Wed Jun  2 23:08:14 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=e0f239a6

Cheat sheet: Fix cross references

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

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

diff --git a/eapi-cheatsheet.tex b/eapi-cheatsheet.tex
index 83ddfa7..fb62827 100644
--- a/eapi-cheatsheet.tex
+++ b/eapi-cheatsheet.tex
@@ -348,10 +348,10 @@ differences between these previous EAPIs.
 which applies patches from the \code{PATCHES} variable with the
 new \code{eapply} command, and user-provided patches with
 \code{eapply_user}.
-See \featureref{src-prepare-6}.
+See \featureref{src-prepare}.
 \item[\code{src_install}] The default implementation uses the new
 \code{einstalldocs} function for installing documentation.
-See \featureref{src-install-6}.
+See \featureref{src-install}.
 \item[\code{nonfatal die}] When \code{die} or \code{assert} are
 called under the \code{nonfatal} command and with the \code{-n}
 option, they will not abort the build process but return with an



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

2021-06-03 Thread Ulrich Müller
commit: c207c2ec6391f884bdfb4de129068e98eb63f2e8
Author: Ulrich Müller  gentoo  org>
AuthorDate: Thu May 27 18:30:24 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Thu Jun  3 07:04:04 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=c207c2ec

Cheat sheet: Update for EAPI 8

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

 eapi-cheatsheet.tex | 62 -
 1 file changed, 61 insertions(+), 1 deletion(-)

diff --git a/eapi-cheatsheet.tex b/eapi-cheatsheet.tex
index 82602f2..451ab85 100644
--- a/eapi-cheatsheet.tex
+++ b/eapi-cheatsheet.tex
@@ -15,7 +15,7 @@
 \usepackage[local]{gitinfo2}
 \newcommand{\code}[1]{\texttt{#1}}
 % This should reflect the latest approved EAPI version
-\newcommand{\version}{7.0}
+\newcommand{\version}{8.0}
 \newcommand{\featureref}[1]{\textsc{#1} on page~\pageref{feat:#1}}
 \renewcommand{\familydefault}{\sfdefault}
 \urlstyle{sf}
@@ -517,6 +517,66 @@ differences between these previous EAPIs.
 used as replacement.
 See \featureref{banned-commands}.
 \end{description}
+
+\section{EAPI 8}
+\label{sec:cs:eapi8}
+\subsection{Additions/Changes}
+\label{sec:cs:eapi8-additions}
+\begin{description}
+\item[\code{profiles/updates} directory] Arbitrary filenames
+are now allowed, instead of strict naming by quarters
+(like \code{2Q-2021}). See \featureref{updates-filenames}.
+\item[Bash version] Ebuilds can use features of Bash version 5.0
+(was 4.2 before). See \featureref{bash-version}.
+\item[Selective fetch/mirror restriction] In \code{SRC_URI},
+adding a \code{fetch+} or \code{mirror+} prefix to an individual
+URI means that the file may be fetched or mirrored. This overrides
+the corresponding global settings in the \code{RESTRICT} variable.
+See \featureref{uri-restrict}.
+\item[\code{IDEPEND}] This variable specifies install-time
+dependencies on packages used in (e.\,g.) \code{pkg_postinst}.
+In a cross-compilation environment, these are dependencies for
+native tools (\code{CBUILD}). See \featureref{idepend}.
+\item[\code{pkg_*} phases] The initial working directory is
+guaranteed to be empty. See \featureref{phase-function-dir}.
+\item[\code{src_prepare}] Items in the \code{PATCHES} variable are
+interpreted as files, even if their name begins with a hyphen.
+See \featureref{src-prepare}.
+\item[\code{PROPERTIES} and \code{RESTRICT}] These variables are
+accumulated across the ebuild and inherited eclasses, like
+\code{IUSE}, \code{REQUIRED\_USE}, and \code{*DEPEND} were before.
+See \featureref{accumulate-vars}.
+\item[\code{econf}] If supported, options
+\code{-{}-disable-static} and
+\code{-{}-datarootdir=\$\{EPREFIX\}/usr/share} are passed
+to configure, respectively. See \featureref{econf-options}.
+\item[\code{dosym}] With the new option \code{-r}, an absolute
+path specified for the link target will be converted to a path
+relative to the link location. See \featureref{dosym-relative}. 
+\item[\code{insopts}] Commands \code{doconfd}, \code{doenvd},
+\code{doheader} install files with fixed mode 0644, i.\,e.,
+they are no longer affected by \code{insopts}.
+See \featureref{insopts}.
+\item[\code{exeopts}] Command \code{doinitd} installs files
+with fixed mode 0755, i.\,e., it is no longer affected by
+\code{exeopts}. See \featureref{exeopts}.
+\item[\code{usev}] This helper has an optional second argument
+now: \code{usev} \emph{ [true]}. If the flag is set,
+outputs \emph{[true]}, or the flag's name if called with only one
+argument. Otherwise outputs nothing. See \featureref{usev}.
+\end{description}
+\subsection{Removals/Bans}
+\label{sec:cs:eapi8-removalsbans}
+\begin{description}
+\item[\code{useq}] No longer allowed. Use regular \code{use} as
+a drop-in replacement. See \featureref{banned-commands}.
+\item[\code{hasv} and \code{hasq}] No longer allowed. Regular
+\code{has} should be used instead.
+See \featureref{banned-commands}.
+\item[\code{unpack}] No longer supports unpacking of 7-Zip, RAR,
+and LHA archives. See \featureref{unpack-extensions}.
+\end{description}
+
 \end{document}
 
 % vim: set filetype=tex fileencoding=utf8 et tw=70 spell spelllang=en :



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

2021-06-03 Thread Ulrich Müller
commit: 4a735a7e404a6bccbba3da5d47705c12e11220e3
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun May 16 18:22:15 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Wed Jun  2 23:07:30 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=4a735a7e

EAPI 8 has dosym -r

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

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index bbb8957..8cfc442 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -293,6 +293,9 @@ Output commands use stdout & 
\compactfeatureref{output-no-stdout} &
 \t{domo} destination path & \compactfeatureref{domo-path} &
 \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{/usr} & 
\t{/usr} \\
 
+\t{dosym -r} & \compactfeatureref{dosym-relative} &
+No & No & No & No & Yes \\
+
 \t{new*} support stdin & \compactfeatureref{newfoo-stdin} &
 No & Yes & Yes & Yes & Yes \\
 
@@ -517,6 +520,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{hasv} and \t{hasq} banned, \featureref{banned-commands}.
 \item \t{econf} adds \t{-{}-datarootdir}, \featureref{econf-options}.
 \item \t{econf} adds \t{-{}-disable-static}, \featureref{econf-options}.
+\item \t{dosym} can create relative paths, \featureref{dosym-relative}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 817b52b..4e43c69 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -599,9 +599,28 @@ the current phase function has returned.
 
 \item[dosbin] As \t{dobin}, but installs to \t{DESTTREE/sbin}.
 
-\item[dosym] Creates a symbolic link named as for its second parameter, 
pointing to the first. If
-the directory containing the new link does not exist, creates it. Failure 
behaviour is EAPI
-dependent as per section~\ref{sec:failure-behaviour}.
+\item[dosym] Creates a symbolic link named as for its second parameter, 
pointing to the first.
+If the directory containing the new link does not exist, creates it.
+
+\featurelabel{dosym-relative} In EAPIs listed in table~\ref{tab:dosym-r} 
as supporting creation
+of relative paths, when called with option \t{-r}, the first parameter 
(the link target) is
+converted from an absolute path to a path relative to the the second 
parameter (the link name).
+The  algorithm must return a result identical to the one returned by the 
function in
+listing~\ref{lst:dosym-r}, with \t{realpath} and \t{dirname} from GNU 
coreutils version~8.32.
+Specifying option \t{-r} together with a relative path as first (target) 
parameter is an error.
+
+Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
+
+\begin{listing}[h]
+\caption{Create a relative path for \t{dosym -r}} \label{lst:dosym-r}
+\begin{verbatim}
+dosym_relative_path() {
+local link=$(realpath -m -s "/${2#/}")
+local linkdir=$(dirname "${link}")
+realpath -m -s --relative-to="${linkdir}" "$1"
+}
+\end{verbatim}
+\end{listing}
 
 \item[fowners] Acts as for \t{chown}, but takes paths relative to the image 
directory. Failure
 behaviour is EAPI dependent as per section~\ref{sec:failure-behaviour}.
@@ -729,6 +748,20 @@ the current phase function has returned.
 \end{tabular}
 \end{centertable}
 
+\ChangeWhenAddingAnEAPI{8}
+\begin{centertable}{EAPIs supporting \t{dosym -r}}
+\label{tab:dosym-r}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{\t{dosym} supports creation of relative 
paths?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7  & No  \\
+  8   & Yes \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \subsection{Commands affecting install destinations}
 The following commands are used to set the various destination trees and 
options used by the above
 installation commands. They must be shell functions or aliases, due to the 
need to set variables



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

2021-06-03 Thread Ulrich Müller
commit: 8dbcbe956f5fbc813b85b50a72e2fab4730ae411
Author: Michał Górny  gentoo  org>
AuthorDate: Tue Dec 24 21:50:30 2019 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Wed Jun  2 23:07:36 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=8dbcbe95

EAPI 8 removes .7z, .rar, .lha unpack support

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

 eapi-differences.tex | 10 ++
 pkg-mgr-commands.tex | 21 ++---
 2 files changed, 24 insertions(+), 7 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 5609de6..900f415 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -341,6 +341,15 @@ Controllable stripping & \compactfeatureref{dostrip} &
 \t{unpack} support for \t{txz} & \compactfeatureref{unpack-extensions} &
 No & No & Yes & Yes & Yes \\
 
+\t{unpack} support for \t{7z} & \compactfeatureref{unpack-extensions} &
+Yes & Yes & Yes & Yes & No \\
+
+\t{unpack} support for \t{lha} & \compactfeatureref{unpack-extensions} &
+Yes & Yes & Yes & Yes & No \\
+
+\t{unpack} support for \t{rar} & \compactfeatureref{unpack-extensions} &
+Yes & Yes & Yes & Yes & No \\
+
 \t{unpack} case-insensitive & \compactfeatureref{unpack-ignore-case} &
 No & No & Yes & Yes & Yes \\
 
@@ -533,6 +542,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{insopts} no longer affects \t{doconfd}, \t{doenvd} and \t{doheader}, 
\featureref{insopts}.
 \item \t{exeopts} no longer affects \t{doinitd}, \featureref{exeopts}.
 \item \t{usev} supports an optional second argument, \featureref{usev}.
+\item \t{unpack} no longer supports \t{.7z}, \t{.rar}, \t{.lha}, 
\featureref{unpack-extensions}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 92447d3..04a8ac4 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -1153,10 +1153,13 @@ has returned.
 \item bzip2-compressed tar files (\t{*.tar.bz2, *.tbz2, *.tar.bz, *.tbz}). 
Ebuilds must ensure
 that bzip2 and GNU tar are installed.
 \item zip files (\t{*.zip, *.ZIP, *.jar}). Ebuilds must ensure that 
Info-ZIP Unzip is installed.
-\item 7zip files (\t{*.7z, *.7Z}). Ebuilds must ensure that P7ZIP is 
installed.
+\item 7zip files (\t{*.7z, *.7Z}). Ebuilds must ensure that P7ZIP is 
installed. Only for EAPIs
+listed in table~\ref{tab:unpack-extensions-table} as supporting 
\t{.7z}.
 \item rar files (\t{*.rar, *.RAR}). Ebuilds must ensure that RARLAB's 
unrar is installed.
+Only for EAPIs listed in table~\ref{tab:unpack-extensions-table} as 
supporting \t{.rar}.
 \item LHA archives (\t{*.LHA, *.LHa, *.lha, *.lzh}). Ebuilds must ensure 
that the lha program is
-installed.
+installed. Only for EAPIs listed in 
table~\ref{tab:unpack-extensions-table} as supporting
+\t{.lha}.
 \item ar archives (\t{*.a}). Ebuilds must ensure that GNU binutils is 
installed.
 \item deb packages (\t{*.deb}). Ebuilds must ensure that the deb2targz 
program is installed on
 those platforms where the GNU binutils ar program is not available and 
the installed ar
@@ -1195,16 +1198,20 @@ has returned.
 \ChangeWhenAddingAnEAPI{8}
 \begin{centertable}{\t{unpack} extensions for EAPIs}
 \label{tab:unpack-extensions-table}
-\begin{tabular}{}
+\begin{tabular}{}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{c}{\textbf{\t{.xz}?}} &
   \multicolumn{1}{c}{\textbf{\t{.tar.xz}?}} &
-  \multicolumn{1}{c}{\textbf{\t{.txz}?}} \\
+  \multicolumn{1}{c}{\textbf{\t{.txz}?}} &
+  \multicolumn{1}{c}{\textbf{\t{.7z}?}} &
+  \multicolumn{1}{c}{\textbf{\t{.rar}?}} &
+  \multicolumn{1}{c}{\textbf{\t{.lha}?}} \\
   \midrule
-  0, 1, 2   & No  & No  & No  \\
-  3, 4, 5   & Yes & Yes & No  \\
-  6, 7, 8   & Yes & Yes & Yes \\
+  0, 1, 2   & No  & No  & No  & Yes & Yes & Yes \\
+  3, 4, 5   & Yes & Yes & No  & Yes & Yes & Yes \\
+  6, 7  & Yes & Yes & Yes & Yes & Yes & Yes \\
+  8 & Yes & Yes & Yes & No  & No  & No  \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2021-06-03 Thread Ulrich Müller
commit: 61548f3a93bc30fbe1411f4e6b90c43a0d96ae88
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun May 16 16:15:04 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Wed Jun  2 23:07:35 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=61548f3a

EAPI 8: insopts and exeopts affect only doins and doexe

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

 eapi-differences.tex |  8 +++
 pkg-mgr-commands.tex | 64 ++--
 2 files changed, 60 insertions(+), 12 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 8cfc442..d263cbc 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -299,6 +299,12 @@ Output commands use stdout & 
\compactfeatureref{output-no-stdout} &
 \t{new*} support stdin & \compactfeatureref{newfoo-stdin} &
 No & Yes & Yes & Yes & Yes \\
 
+\t{insopts} affects misc.\ commands & \compactfeatureref{insopts} &
+Yes & Yes & Yes & Yes & No \\
+
+\t{exeopts} affects \t{doinitd} & \compactfeatureref{exeopts} &
+Yes & Yes & Yes & Yes & No \\
+
 Controllable compression & \compactfeatureref{docompress} &
 * & Yes & Yes & Yes & Yes \\
 
@@ -521,6 +527,8 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{econf} adds \t{-{}-datarootdir}, \featureref{econf-options}.
 \item \t{econf} adds \t{-{}-disable-static}, \featureref{econf-options}.
 \item \t{dosym} can create relative paths, \featureref{dosym-relative}.
+\item \t{insopts} no longer affects \t{doconfd}, \t{doenvd} and \t{doheader}, 
\featureref{insopts}.
+\item \t{exeopts} no longer affects \t{doinitd}, \featureref{exeopts}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 4e43c69..af45e62 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -460,8 +460,9 @@ the current phase function has returned.
 \t{joe:users}. Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
 
 \item[doconfd] Installs the given config files into \t{/etc/conf.d/}, by 
default with file mode
-\t{0644}, or with the \t{install} options set by the most recent 
\t{insopts} call.
-Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
+\t{0644}. For EAPIs listed in table~\ref{tab:insopts-commands} as 
respecting \t{insopts}
+in \t{doconfd}, the \t{install} options set by the most recent \t{insopts} 
call override
+the default. Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
 
 \item[dodir] Creates the given directories, by default with file mode 
\t{0755}, or with the
 \t{install} options set by the most recent \t{diropts} call. Failure 
behaviour is EAPI
@@ -478,8 +479,9 @@ the current phase function has returned.
 section~\ref{sec:failure-behaviour}.
 
 \item[doenvd] Installs the given environment files into \t{/etc/env.d/}, by 
default with file mode
-\t{0644}, or with the \t{install} options set by the most recent 
\t{insopts} call.
-Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
+\t{0644}. For EAPIs listed in table~\ref{tab:insopts-commands} as 
respecting \t{insopts}
+in \t{doenvd}, the \t{install} options set by the most recent \t{insopts} 
call override
+the default. Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
 
 \item[doexe] Installs the given files into the directory specified by the most 
recent \t{exeinto}
 call. If \t{exeinto} has not yet been called, behaviour is undefined. 
Files are installed by
@@ -494,9 +496,10 @@ the current phase function has returned.
 section~\ref{sec:banned-commands}.
 
 \item[doheader] \featurelabel{doheader} Installs the given header files into 
\t{/usr/include/},
-by default with file mode \t{0644}, or with the \t{install} options set by 
the most recent
-\t{insopts} call. If the first argument is \t{-r}, then operates 
recursively, descending
-into any directories given.
+by default with file mode \t{0644}. For EAPIs listed in 
table~\ref{tab:insopts-commands}
+as respecting \t{insopts} in \t{doheader}, the \t{install} options set by 
the most recent
+\t{insopts} call override the default. If the first argument is \t{-r}, 
then operates
+recursively, descending into any directories given.
 Only available in EAPIs listed in table~\ref{tab:doheader-table} as 
supporting \t{doheader}.
 Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
 
@@ -529,8 +532,9 @@ the current phase function has returned.
 \t{0644}. Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
 
 \item[doinitd] Installs the given initscript files into \t{/etc/init.d}, by 
default with file mode
-\t{0755}, or with the \t{install} options set by the most recent 
\t{exeopts} call.
-Failure behaviour is EAPI 

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

2021-06-03 Thread Ulrich Müller
commit: 9a9396a99ba3f76670047a323bbf9e3d8d1fd520
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun May 16 18:59:37 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Wed Jun  2 23:07:36 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=9a9396a9

EAPI 8: usev has an optional second argument

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

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index d263cbc..5609de6 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -317,6 +317,9 @@ Controllable stripping & \compactfeatureref{dostrip} &
 \t{dostrip} & \compactfeatureref{dostrip} &
 No & No & No & Yes & Yes \\
 
+\t{usev} second arg & \compactfeatureref{usev} &
+No & No & No & No & Yes \\
+
 \t{use_with} empty third arg & \compactfeatureref{use-with} &
 * & Yes & Yes & Yes & Yes \\
 
@@ -529,6 +532,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{dosym} can create relative paths, \featureref{dosym-relative}.
 \item \t{insopts} no longer affects \t{doconfd}, \t{doenvd} and \t{doheader}, 
\featureref{insopts}.
 \item \t{exeopts} no longer affects \t{doinitd}, \featureref{exeopts}.
+\item \t{usev} supports an optional second argument, \featureref{usev}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index af45e62..92447d3 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -936,15 +936,17 @@ table~\ref{tab:use-list-strictness}.
 \item[use] Returns shell true (0) if the first argument (a \t{USE} flag name) 
is enabled, false
 otherwise.  If the flag name is prefixed with \t{!}, returns true if the 
flag is disabled, and
 false if it is enabled. It is guaranteed that this command is quiet.
-\item[usev] The same as \t{use}, but also prints the flag name if the condition
-is met.
+\item[usev] \featurelabel{usev} The same as \t{use}, but also prints the flag 
name if the condition
+is met. In EAPIs listed in table~\ref{tab:use-list-args} as supporting an 
optional second
+argument for \t{usev}, prints the second argument instead, if it is 
specified and if the
+condition is met.
 \item[useq] Deprecated synonym for \t{use}.
 In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as per
 section~\ref{sec:banned-commands}.
 \item[use_with] \featurelabel{use-with} Has one-, two-, and three-argument 
forms. The first
 argument is a USE flag name, the second a \t{configure} option name 
(\t{\$\{opt\}}), defaulting
 to the same as the first argument if not provided, and the third is a 
string value
-(\t{\$\{value\}}). For EAPIs listed in table~\ref{tab:use-with-third-arg} 
as not supporting it,
+(\t{\$\{value\}}). For EAPIs listed in table~\ref{tab:use-list-args} as 
not supporting it,
 an empty third argument is treated as if it weren't provided. If the USE 
flag is set, outputs
 \t{-{}-with-\$\{opt\}=\$\{value\}} if the third argument was provided, and
 \t{-{}-with-\$\{opt\}} otherwise. If the flag is not set, then it outputs
@@ -979,15 +981,18 @@ table~\ref{tab:use-list-strictness}.
 \end{centertable}
 
 \ChangeWhenAddingAnEAPI{8}
-\begin{centertable}{EAPIs supporting empty third argument in \t{use_with} and 
\t{use_enable}}
-\label{tab:use-with-third-arg}
-\begin{tabular}{ll}
+\begin{centertable}{\t{usev}, \t{use_with} and \t{use_enable} arguments for 
EAPIs}
+\label{tab:use-list-args}
+\begin{tabular}{lll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{1}{c}{\textbf{Supports empty third argument?}} \\
+  \multicolumn{1}{P{8em}}{\textbf{\t{usev} has optional second argument?}} 
&
+  \multicolumn{1}{P{14em}}{\textbf{\t{use_with} and \t{use_enable} support 
empty third
+argument?}} \\
   \midrule
-  0, 1, 2, 3& No  \\
-  4, 5, 6, 7, 8 & Yes \\
+  0, 1, 2, 3& No  & No  \\
+  4, 5, 6, 7& No  & Yes \\
+  8 & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2021-06-02 Thread Ulrich Müller
commit: aa19ff431400880751d4682aa52b5dc47e32353c
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun May 16 16:15:04 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Wed Jun  2 19:43:08 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=aa19ff43

EAPI 8: insopts and exeopts affect only doins and doexe

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

 eapi-differences.tex |  8 +++
 pkg-mgr-commands.tex | 64 ++--
 2 files changed, 60 insertions(+), 12 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 8cfc442..d263cbc 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -299,6 +299,12 @@ Output commands use stdout & 
\compactfeatureref{output-no-stdout} &
 \t{new*} support stdin & \compactfeatureref{newfoo-stdin} &
 No & Yes & Yes & Yes & Yes \\
 
+\t{insopts} affects misc.\ commands & \compactfeatureref{insopts} &
+Yes & Yes & Yes & Yes & No \\
+
+\t{exeopts} affects \t{doinitd} & \compactfeatureref{exeopts} &
+Yes & Yes & Yes & Yes & No \\
+
 Controllable compression & \compactfeatureref{docompress} &
 * & Yes & Yes & Yes & Yes \\
 
@@ -521,6 +527,8 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{econf} adds \t{-{}-datarootdir}, \featureref{econf-options}.
 \item \t{econf} adds \t{-{}-disable-static}, \featureref{econf-options}.
 \item \t{dosym} can create relative paths, \featureref{dosym-relative}.
+\item \t{insopts} no longer affects \t{doconfd}, \t{doenvd} and \t{doheader}, 
\featureref{insopts}.
+\item \t{exeopts} no longer affects \t{doinitd}, \featureref{exeopts}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 7621ca3..2e6975a 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -460,8 +460,9 @@ the current phase function has returned.
 \t{joe:users}. Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
 
 \item[doconfd] Installs the given config files into \t{/etc/conf.d/}, by 
default with file mode
-\t{0644}, or with the \t{install} options set by the most recent 
\t{insopts} call.
-Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
+\t{0644}. For EAPIs listed in table~\ref{tab:insopts-commands} as 
respecting \t{insopts}
+in \t{doconfd}, the \t{install} options set by the most recent \t{insopts} 
call override
+the default. Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
 
 \item[dodir] Creates the given directories, by default with file mode 
\t{0755}, or with the
 \t{install} options set by the most recent \t{diropts} call. Failure 
behaviour is EAPI
@@ -478,8 +479,9 @@ the current phase function has returned.
 section~\ref{sec:failure-behaviour}.
 
 \item[doenvd] Installs the given environment files into \t{/etc/env.d/}, by 
default with file mode
-\t{0644}, or with the \t{install} options set by the most recent 
\t{insopts} call.
-Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
+\t{0644}. For EAPIs listed in table~\ref{tab:insopts-commands} as 
respecting \t{insopts}
+in \t{doenvd}, the \t{install} options set by the most recent \t{insopts} 
call override
+the default. Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
 
 \item[doexe] Installs the given files into the directory specified by the most 
recent \t{exeinto}
 call. If \t{exeinto} has not yet been called, behaviour is undefined. 
Files are installed by
@@ -494,9 +496,10 @@ the current phase function has returned.
 section~\ref{sec:banned-commands}.
 
 \item[doheader] \featurelabel{doheader} Installs the given header files into 
\t{/usr/include/},
-by default with file mode \t{0644}, or with the \t{install} options set by 
the most recent
-\t{insopts} call. If the first argument is \t{-r}, then operates 
recursively, descending
-into any directories given.
+by default with file mode \t{0644}. For EAPIs listed in 
table~\ref{tab:insopts-commands}
+as respecting \t{insopts} in \t{doheader}, the \t{install} options set by 
the most recent
+\t{insopts} call override the default. If the first argument is \t{-r}, 
then operates
+recursively, descending into any directories given.
 Only available in EAPIs listed in table~\ref{tab:doheader-table} as 
supporting \t{doheader}.
 Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
 
@@ -529,8 +532,9 @@ the current phase function has returned.
 \t{0644}. Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
 
 \item[doinitd] Installs the given initscript files into \t{/etc/init.d}, by 
default with file mode
-\t{0755}, or with the \t{install} options set by the most recent 
\t{exeopts} call.
-Failure behaviour is EAPI 

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

2021-06-02 Thread Ulrich Müller
commit: 7a91daf70f67d7c99b4fdc1a70390978390f0eac
Author: Michał Górny  gentoo  org>
AuthorDate: Tue Dec 24 21:50:30 2019 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Wed Jun  2 19:43:09 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=7a91daf7

EAPI 8 removes .7z, .rar, .lha unpack support

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

 eapi-differences.tex | 10 ++
 pkg-mgr-commands.tex | 21 ++---
 2 files changed, 24 insertions(+), 7 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 5609de6..900f415 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -341,6 +341,15 @@ Controllable stripping & \compactfeatureref{dostrip} &
 \t{unpack} support for \t{txz} & \compactfeatureref{unpack-extensions} &
 No & No & Yes & Yes & Yes \\
 
+\t{unpack} support for \t{7z} & \compactfeatureref{unpack-extensions} &
+Yes & Yes & Yes & Yes & No \\
+
+\t{unpack} support for \t{lha} & \compactfeatureref{unpack-extensions} &
+Yes & Yes & Yes & Yes & No \\
+
+\t{unpack} support for \t{rar} & \compactfeatureref{unpack-extensions} &
+Yes & Yes & Yes & Yes & No \\
+
 \t{unpack} case-insensitive & \compactfeatureref{unpack-ignore-case} &
 No & No & Yes & Yes & Yes \\
 
@@ -533,6 +542,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{insopts} no longer affects \t{doconfd}, \t{doenvd} and \t{doheader}, 
\featureref{insopts}.
 \item \t{exeopts} no longer affects \t{doinitd}, \featureref{exeopts}.
 \item \t{usev} supports an optional second argument, \featureref{usev}.
+\item \t{unpack} no longer supports \t{.7z}, \t{.rar}, \t{.lha}, 
\featureref{unpack-extensions}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 4d098cb..df572cf 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -1153,10 +1153,13 @@ has returned.
 \item bzip2-compressed tar files (\t{*.tar.bz2, *.tbz2, *.tar.bz, *.tbz}). 
Ebuilds must ensure
 that bzip2 and GNU tar are installed.
 \item zip files (\t{*.zip, *.ZIP, *.jar}). Ebuilds must ensure that 
Info-ZIP Unzip is installed.
-\item 7zip files (\t{*.7z, *.7Z}). Ebuilds must ensure that P7ZIP is 
installed.
+\item 7zip files (\t{*.7z, *.7Z}). Ebuilds must ensure that P7ZIP is 
installed. Only for EAPIs
+listed in table~\ref{tab:unpack-extensions-table} as supporting 
\t{.7z}.
 \item rar files (\t{*.rar, *.RAR}). Ebuilds must ensure that RARLAB's 
unrar is installed.
+Only for EAPIs listed in table~\ref{tab:unpack-extensions-table} as 
supporting \t{.rar}.
 \item LHA archives (\t{*.LHA, *.LHa, *.lha, *.lzh}). Ebuilds must ensure 
that the lha program is
-installed.
+installed. Only for EAPIs listed in 
table~\ref{tab:unpack-extensions-table} as supporting
+\t{.lha}.
 \item ar archives (\t{*.a}). Ebuilds must ensure that GNU binutils is 
installed.
 \item deb packages (\t{*.deb}). Ebuilds must ensure that the deb2targz 
program is installed on
 those platforms where the GNU binutils ar program is not available and 
the installed ar
@@ -1195,16 +1198,20 @@ has returned.
 \ChangeWhenAddingAnEAPI{8}
 \begin{centertable}{\t{unpack} extensions for EAPIs}
 \label{tab:unpack-extensions-table}
-\begin{tabular}{}
+\begin{tabular}{}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{c}{\textbf{\t{.xz}?}} &
   \multicolumn{1}{c}{\textbf{\t{.tar.xz}?}} &
-  \multicolumn{1}{c}{\textbf{\t{.txz}?}} \\
+  \multicolumn{1}{c}{\textbf{\t{.txz}?}} &
+  \multicolumn{1}{c}{\textbf{\t{.7z}?}} &
+  \multicolumn{1}{c}{\textbf{\t{.rar}?}} &
+  \multicolumn{1}{c}{\textbf{\t{.lha}?}} \\
   \midrule
-  0, 1, 2   & No  & No  & No  \\
-  3, 4, 5   & Yes & Yes & No  \\
-  6, 7, 8   & Yes & Yes & Yes \\
+  0, 1, 2   & No  & No  & No  & Yes & Yes & Yes \\
+  3, 4, 5   & Yes & Yes & No  & Yes & Yes & Yes \\
+  6, 7  & Yes & Yes & Yes & Yes & Yes & Yes \\
+  8 & Yes & Yes & Yes & No  & No  & No  \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2021-06-02 Thread Ulrich Müller
commit: 21f91f86303e3d405fe5cf127529c517107a5ed5
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun May 16 18:22:15 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Wed Jun  2 19:43:03 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=21f91f86

EAPI 8 has dosym -r

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

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index bbb8957..8cfc442 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -293,6 +293,9 @@ Output commands use stdout & 
\compactfeatureref{output-no-stdout} &
 \t{domo} destination path & \compactfeatureref{domo-path} &
 \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{/usr} & 
\t{/usr} \\
 
+\t{dosym -r} & \compactfeatureref{dosym-relative} &
+No & No & No & No & Yes \\
+
 \t{new*} support stdin & \compactfeatureref{newfoo-stdin} &
 No & Yes & Yes & Yes & Yes \\
 
@@ -517,6 +520,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{hasv} and \t{hasq} banned, \featureref{banned-commands}.
 \item \t{econf} adds \t{-{}-datarootdir}, \featureref{econf-options}.
 \item \t{econf} adds \t{-{}-disable-static}, \featureref{econf-options}.
+\item \t{dosym} can create relative paths, \featureref{dosym-relative}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 817b52b..7621ca3 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -599,9 +599,28 @@ the current phase function has returned.
 
 \item[dosbin] As \t{dobin}, but installs to \t{DESTTREE/sbin}.
 
-\item[dosym] Creates a symbolic link named as for its second parameter, 
pointing to the first. If
-the directory containing the new link does not exist, creates it. Failure 
behaviour is EAPI
-dependent as per section~\ref{sec:failure-behaviour}.
+\item[dosym] Creates a symbolic link named as for its second parameter, 
pointing to the first.
+If the directory containing the new link does not exist, creates it.
+
+\featurelabel{dosym-relative} In EAPIs listed in table~\ref{tab:dosym-r} 
as supporting creation
+of relative paths, when called with option \t{-r}, resolves the first 
parameter relative to the
+directory part of the second parameter. The algorithm must return a result 
identical to the one
+returned by the function in listing~\ref{lst:dosym-r}, with \t{realpath} 
and \t{dirname} from
+GNU coreutils version~8.32. Specifying option \t{-r} together with a 
relative path as first
+(target) parameter is an error.
+
+Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
+
+\begin{listing}[h]
+\caption{Create a relative path for \t{dosym -r}} \label{lst:dosym-r}
+\begin{verbatim}
+dosym_relative_path() {
+local link=$(realpath -m -s "/${2#/}")
+local linkdir=$(dirname "${link}")
+realpath -m -s --relative-to="${linkdir}" "$1"
+}
+\end{verbatim}
+\end{listing}
 
 \item[fowners] Acts as for \t{chown}, but takes paths relative to the image 
directory. Failure
 behaviour is EAPI dependent as per section~\ref{sec:failure-behaviour}.
@@ -729,6 +748,20 @@ the current phase function has returned.
 \end{tabular}
 \end{centertable}
 
+\ChangeWhenAddingAnEAPI{8}
+\begin{centertable}{EAPIs supporting \t{dosym -r}}
+\label{tab:dosym-r}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{\t{dosym} supports creation of relative 
paths?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7  & No  \\
+  8   & Yes \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \subsection{Commands affecting install destinations}
 The following commands are used to set the various destination trees and 
options used by the above
 installation commands. They must be shell functions or aliases, due to the 
need to set variables



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

2021-06-02 Thread Ulrich Müller
commit: f29147041820ffce284f9026c4e276fbaa09e7a5
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun May 16 18:59:37 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Wed Jun  2 19:43:09 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=f2914704

EAPI 8: usev has an optional second argument

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

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index d263cbc..5609de6 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -317,6 +317,9 @@ Controllable stripping & \compactfeatureref{dostrip} &
 \t{dostrip} & \compactfeatureref{dostrip} &
 No & No & No & Yes & Yes \\
 
+\t{usev} second arg & \compactfeatureref{usev} &
+No & No & No & No & Yes \\
+
 \t{use_with} empty third arg & \compactfeatureref{use-with} &
 * & Yes & Yes & Yes & Yes \\
 
@@ -529,6 +532,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{dosym} can create relative paths, \featureref{dosym-relative}.
 \item \t{insopts} no longer affects \t{doconfd}, \t{doenvd} and \t{doheader}, 
\featureref{insopts}.
 \item \t{exeopts} no longer affects \t{doinitd}, \featureref{exeopts}.
+\item \t{usev} supports an optional second argument, \featureref{usev}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 2e6975a..4d098cb 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -936,15 +936,17 @@ table~\ref{tab:use-list-strictness}.
 \item[use] Returns shell true (0) if the first argument (a \t{USE} flag name) 
is enabled, false
 otherwise.  If the flag name is prefixed with \t{!}, returns true if the 
flag is disabled, and
 false if it is enabled. It is guaranteed that this command is quiet.
-\item[usev] The same as \t{use}, but also prints the flag name if the condition
-is met.
+\item[usev] \featurelabel{usev} The same as \t{use}, but also prints the flag 
name if the condition
+is met. In EAPIs listed in table~\ref{tab:use-list-args} as supporting an 
optional second
+argument for \t{usev}, prints the second argument instead, if it is 
specified and if the
+condition is met.
 \item[useq] Deprecated synonym for \t{use}.
 In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as per
 section~\ref{sec:banned-commands}.
 \item[use_with] \featurelabel{use-with} Has one-, two-, and three-argument 
forms. The first
 argument is a USE flag name, the second a \t{configure} option name 
(\t{\$\{opt\}}), defaulting
 to the same as the first argument if not provided, and the third is a 
string value
-(\t{\$\{value\}}). For EAPIs listed in table~\ref{tab:use-with-third-arg} 
as not supporting it,
+(\t{\$\{value\}}). For EAPIs listed in table~\ref{tab:use-list-args} as 
not supporting it,
 an empty third argument is treated as if it weren't provided. If the USE 
flag is set, outputs
 \t{-{}-with-\$\{opt\}=\$\{value\}} if the third argument was provided, and
 \t{-{}-with-\$\{opt\}} otherwise. If the flag is not set, then it outputs
@@ -979,15 +981,18 @@ table~\ref{tab:use-list-strictness}.
 \end{centertable}
 
 \ChangeWhenAddingAnEAPI{8}
-\begin{centertable}{EAPIs supporting empty third argument in \t{use_with} and 
\t{use_enable}}
-\label{tab:use-with-third-arg}
-\begin{tabular}{ll}
+\begin{centertable}{\t{usev}, \t{use_with} and \t{use_enable} arguments for 
EAPIs}
+\label{tab:use-list-args}
+\begin{tabular}{lll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{1}{c}{\textbf{Supports empty third argument?}} \\
+  \multicolumn{1}{P{8em}}{\textbf{\t{usev} has optional second argument?}} 
&
+  \multicolumn{1}{P{14em}}{\textbf{\t{use_with} and \t{use_enable} support 
empty third
+argument?}} \\
   \midrule
-  0, 1, 2, 3& No  \\
-  4, 5, 6, 7, 8 & Yes \\
+  0, 1, 2, 3& No  & No  \\
+  4, 5, 6, 7& No  & Yes \\
+  8 & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2021-05-27 Thread Ulrich Müller
commit: eb607d42aba5be9a9b56b94624a9677a9abaa1c1
Author: Michał Górny  gentoo  org>
AuthorDate: Tue Dec 24 21:50:30 2019 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Thu May 27 19:15:25 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=eb607d42

EAPI 8 removes .7z, .rar, .lha unpack support

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

 eapi-differences.tex | 10 ++
 pkg-mgr-commands.tex | 21 ++---
 2 files changed, 24 insertions(+), 7 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 5609de6..900f415 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -341,6 +341,15 @@ Controllable stripping & \compactfeatureref{dostrip} &
 \t{unpack} support for \t{txz} & \compactfeatureref{unpack-extensions} &
 No & No & Yes & Yes & Yes \\
 
+\t{unpack} support for \t{7z} & \compactfeatureref{unpack-extensions} &
+Yes & Yes & Yes & Yes & No \\
+
+\t{unpack} support for \t{lha} & \compactfeatureref{unpack-extensions} &
+Yes & Yes & Yes & Yes & No \\
+
+\t{unpack} support for \t{rar} & \compactfeatureref{unpack-extensions} &
+Yes & Yes & Yes & Yes & No \\
+
 \t{unpack} case-insensitive & \compactfeatureref{unpack-ignore-case} &
 No & No & Yes & Yes & Yes \\
 
@@ -533,6 +542,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{insopts} no longer affects \t{doconfd}, \t{doenvd} and \t{doheader}, 
\featureref{insopts}.
 \item \t{exeopts} no longer affects \t{doinitd}, \featureref{exeopts}.
 \item \t{usev} supports an optional second argument, \featureref{usev}.
+\item \t{unpack} no longer supports \t{.7z}, \t{.rar}, \t{.lha}, 
\featureref{unpack-extensions}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index eac17de..848c8da 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -1153,10 +1153,13 @@ has returned.
 \item bzip2-compressed tar files (\t{*.tar.bz2, *.tbz2, *.tar.bz, *.tbz}). 
Ebuilds must ensure
 that bzip2 and GNU tar are installed.
 \item zip files (\t{*.zip, *.ZIP, *.jar}). Ebuilds must ensure that 
Info-ZIP Unzip is installed.
-\item 7zip files (\t{*.7z, *.7Z}). Ebuilds must ensure that P7ZIP is 
installed.
+\item 7zip files (\t{*.7z, *.7Z}). Ebuilds must ensure that P7ZIP is 
installed. Only for EAPIs
+listed in table~\ref{tab:unpack-extensions-table} as supporting 
\t{.7z}.
 \item rar files (\t{*.rar, *.RAR}). Ebuilds must ensure that RARLAB's 
unrar is installed.
+Only for EAPIs listed in table~\ref{tab:unpack-extensions-table} as 
supporting \t{.rar}.
 \item LHA archives (\t{*.LHA, *.LHa, *.lha, *.lzh}). Ebuilds must ensure 
that the lha program is
-installed.
+installed. Only for EAPIs listed in 
table~\ref{tab:unpack-extensions-table} as supporting
+\t{.lha}.
 \item ar archives (\t{*.a}). Ebuilds must ensure that GNU binutils is 
installed.
 \item deb packages (\t{*.deb}). Ebuilds must ensure that the deb2targz 
program is installed on
 those platforms where the GNU binutils ar program is not available and 
the installed ar
@@ -1195,16 +1198,20 @@ has returned.
 \ChangeWhenAddingAnEAPI{8}
 \begin{centertable}{\t{unpack} extensions for EAPIs}
 \label{tab:unpack-extensions-table}
-\begin{tabular}{}
+\begin{tabular}{}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{c}{\textbf{\t{.xz}?}} &
   \multicolumn{1}{c}{\textbf{\t{.tar.xz}?}} &
-  \multicolumn{1}{c}{\textbf{\t{.txz}?}} \\
+  \multicolumn{1}{c}{\textbf{\t{.txz}?}} &
+  \multicolumn{1}{c}{\textbf{\t{.7z}?}} &
+  \multicolumn{1}{c}{\textbf{\t{.rar}?}} &
+  \multicolumn{1}{c}{\textbf{\t{.lha}?}} \\
   \midrule
-  0, 1, 2   & No  & No  & No  \\
-  3, 4, 5   & Yes & Yes & No  \\
-  6, 7, 8   & Yes & Yes & Yes \\
+  0, 1, 2   & No  & No  & No  & Yes & Yes & Yes \\
+  3, 4, 5   & Yes & Yes & No  & Yes & Yes & Yes \\
+  6, 7  & Yes & Yes & Yes & Yes & Yes & Yes \\
+  8 & Yes & Yes & Yes & No  & No  & No  \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2021-05-27 Thread Ulrich Müller
commit: 65a29e85e609c7058151d0dcf170de0b1843aab7
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun May 16 16:15:04 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Thu May 27 19:15:25 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=65a29e85

EAPI 8: insopts and exeopts affect only doins and doexe

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

 eapi-differences.tex |  8 +++
 pkg-mgr-commands.tex | 64 ++--
 2 files changed, 60 insertions(+), 12 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 8cfc442..d263cbc 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -299,6 +299,12 @@ Output commands use stdout & 
\compactfeatureref{output-no-stdout} &
 \t{new*} support stdin & \compactfeatureref{newfoo-stdin} &
 No & Yes & Yes & Yes & Yes \\
 
+\t{insopts} affects misc.\ commands & \compactfeatureref{insopts} &
+Yes & Yes & Yes & Yes & No \\
+
+\t{exeopts} affects \t{doinitd} & \compactfeatureref{exeopts} &
+Yes & Yes & Yes & Yes & No \\
+
 Controllable compression & \compactfeatureref{docompress} &
 * & Yes & Yes & Yes & Yes \\
 
@@ -521,6 +527,8 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{econf} adds \t{-{}-datarootdir}, \featureref{econf-options}.
 \item \t{econf} adds \t{-{}-disable-static}, \featureref{econf-options}.
 \item \t{dosym} can create relative paths, \featureref{dosym-relative}.
+\item \t{insopts} no longer affects \t{doconfd}, \t{doenvd} and \t{doheader}, 
\featureref{insopts}.
+\item \t{exeopts} no longer affects \t{doinitd}, \featureref{exeopts}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index dd286a6..58254fa 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -460,8 +460,9 @@ the current phase function has returned.
 \t{joe:users}. Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
 
 \item[doconfd] Installs the given config files into \t{/etc/conf.d/}, by 
default with file mode
-\t{0644}, or with the \t{install} options set by the most recent 
\t{insopts} call.
-Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
+\t{0644}. For EAPIs listed in table~\ref{tab:insopts-commands} as 
respecting \t{insopts}
+in \t{doconfd}, the \t{install} options set by the most recent \t{insopts} 
call override
+the default. Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
 
 \item[dodir] Creates the given directories, by default with file mode 
\t{0755}, or with the
 \t{install} options set by the most recent \t{diropts} call. Failure 
behaviour is EAPI
@@ -478,8 +479,9 @@ the current phase function has returned.
 section~\ref{sec:failure-behaviour}.
 
 \item[doenvd] Installs the given environment files into \t{/etc/env.d/}, by 
default with file mode
-\t{0644}, or with the \t{install} options set by the most recent 
\t{insopts} call.
-Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
+\t{0644}. For EAPIs listed in table~\ref{tab:insopts-commands} as 
respecting \t{insopts}
+in \t{doenvd}, the \t{install} options set by the most recent \t{insopts} 
call override
+the default. Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
 
 \item[doexe] Installs the given files into the directory specified by the most 
recent \t{exeinto}
 call. If \t{exeinto} has not yet been called, behaviour is undefined. 
Files are installed by
@@ -494,9 +496,10 @@ the current phase function has returned.
 section~\ref{sec:banned-commands}.
 
 \item[doheader] \featurelabel{doheader} Installs the given header files into 
\t{/usr/include/},
-by default with file mode \t{0644}, or with the \t{install} options set by 
the most recent
-\t{insopts} call. If the first argument is \t{-r}, then operates 
recursively, descending
-into any directories given.
+by default with file mode \t{0644}. For EAPIs listed in 
table~\ref{tab:insopts-commands}
+as respecting \t{insopts} in \t{doheader}, the \t{install} options set by 
the most recent
+\t{insopts} call override the default. If the first argument is \t{-r}, 
then operates
+recursively, descending into any directories given.
 Only available in EAPIs listed in table~\ref{tab:doheader-table} as 
supporting \t{doheader}.
 Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
 
@@ -529,8 +532,9 @@ the current phase function has returned.
 \t{0644}. Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
 
 \item[doinitd] Installs the given initscript files into \t{/etc/init.d}, by 
default with file mode
-\t{0755}, or with the \t{install} options set by the most recent 
\t{exeopts} call.
-Failure behaviour is EAPI 

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

2021-05-27 Thread Ulrich Müller
commit: 1ce95f858016547047b3a82ab32c63a50b9ffbf4
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun May 16 18:59:37 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Thu May 27 19:15:25 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=1ce95f85

EAPI 8: usev has an optional second argument

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

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index d263cbc..5609de6 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -317,6 +317,9 @@ Controllable stripping & \compactfeatureref{dostrip} &
 \t{dostrip} & \compactfeatureref{dostrip} &
 No & No & No & Yes & Yes \\
 
+\t{usev} second arg & \compactfeatureref{usev} &
+No & No & No & No & Yes \\
+
 \t{use_with} empty third arg & \compactfeatureref{use-with} &
 * & Yes & Yes & Yes & Yes \\
 
@@ -529,6 +532,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{dosym} can create relative paths, \featureref{dosym-relative}.
 \item \t{insopts} no longer affects \t{doconfd}, \t{doenvd} and \t{doheader}, 
\featureref{insopts}.
 \item \t{exeopts} no longer affects \t{doinitd}, \featureref{exeopts}.
+\item \t{usev} supports an optional second argument, \featureref{usev}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 58254fa..eac17de 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -936,15 +936,17 @@ table~\ref{tab:use-list-strictness}.
 \item[use] Returns shell true (0) if the first argument (a \t{USE} flag name) 
is enabled, false
 otherwise.  If the flag name is prefixed with \t{!}, returns true if the 
flag is disabled, and
 false if it is enabled. It is guaranteed that this command is quiet.
-\item[usev] The same as \t{use}, but also prints the flag name if the condition
-is met.
+\item[usev] \featurelabel{usev} The same as \t{use}, but also prints the flag 
name if the condition
+is met. In EAPIs listed in table~\ref{tab:use-list-args} as supporting an 
optional second
+argument for \t{usev}, prints the second argument instead, if it is 
specified and if the
+condition is met.
 \item[useq] Deprecated synonym for \t{use}.
 In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as per
 section~\ref{sec:banned-commands}.
 \item[use_with] \featurelabel{use-with} Has one-, two-, and three-argument 
forms. The first
 argument is a USE flag name, the second a \t{configure} option name 
(\t{\$\{opt\}}), defaulting
 to the same as the first argument if not provided, and the third is a 
string value
-(\t{\$\{value\}}). For EAPIs listed in table~\ref{tab:use-with-third-arg} 
as not supporting it,
+(\t{\$\{value\}}). For EAPIs listed in table~\ref{tab:use-list-args} as 
not supporting it,
 an empty third argument is treated as if it weren't provided. If the USE 
flag is set, outputs
 \t{-{}-with-\$\{opt\}=\$\{value\}} if the third argument was provided, and
 \t{-{}-with-\$\{opt\}} otherwise. If the flag is not set, then it outputs
@@ -979,15 +981,18 @@ table~\ref{tab:use-list-strictness}.
 \end{centertable}
 
 \ChangeWhenAddingAnEAPI{8}
-\begin{centertable}{EAPIs supporting empty third argument in \t{use_with} and 
\t{use_enable}}
-\label{tab:use-with-third-arg}
-\begin{tabular}{ll}
+\begin{centertable}{\t{usev}, \t{use_with} and \t{use_enable} arguments for 
EAPIs}
+\label{tab:use-list-args}
+\begin{tabular}{lll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{1}{c}{\textbf{Supports empty third argument?}} \\
+  \multicolumn{1}{P{8em}}{\textbf{\t{usev} has optional second argument?}} 
&
+  \multicolumn{1}{P{14em}}{\textbf{\t{use_with} and \t{use_enable} support 
empty third
+argument?}} \\
   \midrule
-  0, 1, 2, 3& No  \\
-  4, 5, 6, 7, 8 & Yes \\
+  0, 1, 2, 3& No  & No  \\
+  4, 5, 6, 7& No  & Yes \\
+  8 & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2021-05-27 Thread Ulrich Müller
commit: 90bccfddf9834c2ae0be236632d8eb1d6ee8fd19
Author: Ulrich Müller  gentoo  org>
AuthorDate: Mon May 17 15:45:42 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Thu May 27 19:15:25 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=90bccfdd

EAPI 8: econf adds --disable-static

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

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 32f4a66..bbb8957 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -272,7 +272,8 @@ Output commands use stdout & 
\compactfeatureref{output-no-stdout} &
 disable dependency tracking, disable silent rules &
 disable dependency tracking, disable silent rules, docdir, htmldir &
 disable dependency tracking, disable silent rules, docdir, htmldir, with 
sysroot &
-disable dependency tracking, disable silent rules, datarootdir, docdir, 
htmldir, with sysroot \\
+disable dependency tracking, disable silent rules, disable static,
+datarootdir, docdir, htmldir, with sysroot \\
 
 \t{dodoc -r} & \compactfeatureref{dodoc} &
 * & Yes & Yes & Yes & Yes \\
@@ -515,6 +516,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{useq} banned, \featureref{banned-commands}.
 \item \t{hasv} and \t{hasq} banned, \featureref{banned-commands}.
 \item \t{econf} adds \t{-{}-datarootdir}, \featureref{econf-options}.
+\item \t{econf} adds \t{-{}-disable-static}, \featureref{econf-options}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 7909bdd..e74f730 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -338,27 +338,31 @@ commands once the current phase function has returned.
 \item \t{-{}-disable-silent-rules}, 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-silent-rules}
 occurs in the output of \t{configure -{}-help}.
+\item \t{-{}-disable-static}, if the EAPI is listed in 
table~\ref{tab:econf-options-table}
+as using it. This option will only be passed if the string 
\t{-{}-disable-static} occurs
+in the output of \t{configure -{}-help}.
 \end{itemize}
 
 \ChangeWhenAddingAnEAPI{8}
 \begin{centertable}{Extra \t{econf} arguments for EAPIs}
 \label{tab:econf-options-table}
-\begin{tabular}{lll}
+\begin{tabular}{}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{P{9em}}{\textbf{-{}-disable-dependency-tracking}} &
   \multicolumn{1}{P{5em}}{\textbf{-{}-disable-silent-rules}} &
+  \multicolumn{1}{c}{\textbf{-{}-disable-static}} &
   \multicolumn{1}{c}{\textbf{-{}-datarootdir}} &
   \multicolumn{1}{c}{\textbf{-{}-docdir}} &
   \multicolumn{1}{c}{\textbf{-{}-htmldir}} &
   \multicolumn{1}{c}{\textbf{-{}-with-sysroot}} \\
   \midrule
-  0, 1, 2, 3& No  & No  & No  & No  & No  & No  \\
-  4 & Yes & No  & No  & No  & No  & No  \\
-  5 & Yes & Yes & No  & No  & No  & No  \\
-  6 & Yes & Yes & No  & Yes & Yes & No  \\
-  7 & Yes & Yes & No  & Yes & Yes & Yes \\
-  8 & Yes & Yes & Yes & Yes & Yes & Yes \\
+  0, 1, 2, 3& No  & No  & No  & No  & No  & No  & No  \\
+  4 & Yes & No  & No  & No  & No  & No  & No  \\
+  5 & Yes & Yes & No  & No  & No  & No  & No  \\
+  6 & Yes & Yes & No  & No  & Yes & Yes & No  \\
+  7 & Yes & Yes & No  & No  & Yes & Yes & Yes \\
+  8 & Yes & Yes & Yes & Yes & Yes & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2021-05-27 Thread Ulrich Müller
commit: 156001d89c113202522b9faf0cb68b3e7dbe27f9
Author: Michał Górny  gentoo  org>
AuthorDate: Tue Dec 24 09:46:26 2019 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Thu May 27 19:15:25 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=156001d8

EAPI 8 has econf passing --datarootdir

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

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index a2a74b8..32f4a66 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -272,7 +272,7 @@ Output commands use stdout & 
\compactfeatureref{output-no-stdout} &
 disable dependency tracking, disable silent rules &
 disable dependency tracking, disable silent rules, docdir, htmldir &
 disable dependency tracking, disable silent rules, docdir, htmldir, with 
sysroot &
-disable dependency tracking, disable silent rules, docdir, htmldir, with 
sysroot \\
+disable dependency tracking, disable silent rules, datarootdir, docdir, 
htmldir, with sysroot \\
 
 \t{dodoc -r} & \compactfeatureref{dodoc} &
 * & Yes & Yes & Yes & Yes \\
@@ -514,6 +514,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{PROPERTIES} and \t{RESTRICT} accumulated across eclasses, 
\featureref{accumulate-vars}.
 \item \t{useq} banned, \featureref{banned-commands}.
 \item \t{hasv} and \t{hasq} banned, \featureref{banned-commands}.
+\item \t{econf} adds \t{-{}-datarootdir}, \featureref{econf-options}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index c56e592..7909bdd 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -312,6 +312,9 @@ commands once the current phase function has returned.
 \item \t{-{}-mandir} must be \t{\$\{EPREFIX\}/usr/share/man}
 \item \t{-{}-infodir} must be \t{\$\{EPREFIX\}/usr/share/info}
 \item \t{-{}-datadir} must be \t{\$\{EPREFIX\}/usr/share}
+\item \t{-{}-datarootdir} must be \t{\$\{EPREFIX\}/usr/share}, 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{-{}-datarootdir} occurs in the output of \t{configure 
-{}-help}.
 \item \t{-{}-sysconfdir} must be \t{\$\{EPREFIX\}/etc}
 \item \t{-{}-localstatedir} must be \t{\$\{EPREFIX\}/var/lib}
 \item \t{-{}-docdir} must be \t{\$\{EPREFIX\}/usr/share/doc/\$\{PF\}}, if 
the EAPI is listed in
@@ -340,20 +343,22 @@ commands once the current phase function has returned.
 \ChangeWhenAddingAnEAPI{8}
 \begin{centertable}{Extra \t{econf} arguments for EAPIs}
 \label{tab:econf-options-table}
-\begin{tabular}{ll}
+\begin{tabular}{lll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{P{9em}}{\textbf{-{}-disable-dependency-tracking}} &
   \multicolumn{1}{P{5em}}{\textbf{-{}-disable-silent-rules}} &
+  \multicolumn{1}{c}{\textbf{-{}-datarootdir}} &
   \multicolumn{1}{c}{\textbf{-{}-docdir}} &
   \multicolumn{1}{c}{\textbf{-{}-htmldir}} &
   \multicolumn{1}{c}{\textbf{-{}-with-sysroot}} \\
   \midrule
-  0, 1, 2, 3& No  & No  & No  & No  & No  \\
-  4 & Yes & No  & No  & No  & No  \\
-  5 & Yes & Yes & No  & No  & No  \\
-  6 & Yes & Yes & Yes & Yes & No  \\
-  7, 8  & Yes & Yes & Yes & Yes & Yes \\
+  0, 1, 2, 3& No  & No  & No  & No  & No  & No  \\
+  4 & Yes & No  & No  & No  & No  & No  \\
+  5 & Yes & Yes & No  & No  & No  & No  \\
+  6 & Yes & Yes & No  & Yes & Yes & No  \\
+  7 & Yes & Yes & No  & Yes & Yes & Yes \\
+  8 & Yes & Yes & Yes & Yes & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2021-05-27 Thread Ulrich Müller
commit: 62df2573b906957b844bf7fa9c58f9ede964d3d7
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun May 16 18:22:15 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Thu May 27 19:15:25 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=62df2573

EAPI 8 has dosym -r

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

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index bbb8957..8cfc442 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -293,6 +293,9 @@ Output commands use stdout & 
\compactfeatureref{output-no-stdout} &
 \t{domo} destination path & \compactfeatureref{domo-path} &
 \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{/usr} & 
\t{/usr} \\
 
+\t{dosym -r} & \compactfeatureref{dosym-relative} &
+No & No & No & No & Yes \\
+
 \t{new*} support stdin & \compactfeatureref{newfoo-stdin} &
 No & Yes & Yes & Yes & Yes \\
 
@@ -517,6 +520,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{hasv} and \t{hasq} banned, \featureref{banned-commands}.
 \item \t{econf} adds \t{-{}-datarootdir}, \featureref{econf-options}.
 \item \t{econf} adds \t{-{}-disable-static}, \featureref{econf-options}.
+\item \t{dosym} can create relative paths, \featureref{dosym-relative}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 817b52b..dd286a6 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -599,9 +599,28 @@ the current phase function has returned.
 
 \item[dosbin] As \t{dobin}, but installs to \t{DESTTREE/sbin}.
 
-\item[dosym] Creates a symbolic link named as for its second parameter, 
pointing to the first. If
-the directory containing the new link does not exist, creates it. Failure 
behaviour is EAPI
-dependent as per section~\ref{sec:failure-behaviour}.
+\item[dosym] Creates a symbolic link named as for its second parameter, 
pointing to the first.
+If the directory containing the new link does not exist, creates it.
+
+\featurelabel{dosym-relative} In EAPIs listed in table~\ref{tab:dosym-r} 
as supporting creation
+of relative paths, when called with option \t{-r}, expands the first 
parameter relative to the
+directory part of the second parameter. The algorithm must return a result 
identical to the one
+returned by the function in listing~\ref{lst:dosym-r}, with \t{realpath} 
and \t{dirname} from
+GNU coreutils version~8.32. Specifying option \t{-r} together with a 
relative path as first
+(target) parameter is an error.
+
+Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
+
+\begin{listing}[h]
+\caption{Create a relative path for \t{dosym -r}} \label{lst:dosym-r}
+\begin{verbatim}
+dosym_relative_path() {
+local link=$(realpath -m -s "/${2#/}")
+local linkdir=$(dirname "${link}")
+realpath -m -s --relative-to="${linkdir}" "$1"
+}
+\end{verbatim}
+\end{listing}
 
 \item[fowners] Acts as for \t{chown}, but takes paths relative to the image 
directory. Failure
 behaviour is EAPI dependent as per section~\ref{sec:failure-behaviour}.
@@ -729,6 +748,20 @@ the current phase function has returned.
 \end{tabular}
 \end{centertable}
 
+\ChangeWhenAddingAnEAPI{8}
+\begin{centertable}{EAPIs supporting \t{dosym -r}}
+\label{tab:dosym-r}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{\t{dosym} supports creation of relative 
paths?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7  & No  \\
+  8   & Yes \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \subsection{Commands affecting install destinations}
 The following commands are used to set the various destination trees and 
options used by the above
 installation commands. They must be shell functions or aliases, due to the 
need to set variables



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

2021-05-27 Thread Ulrich Müller
commit: 6ddff747af2abb20af559925bc62833b6895a368
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun May 16 18:46:09 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Thu May 27 19:15:25 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=6ddff747

EAPI 8 accumulates PROPERTIES and RESTRICT across eclasses

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

 eapi-differences.tex |  4 
 eclasses.tex | 27 ++-
 2 files changed, 26 insertions(+), 5 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index aeddb6e..c7af2b3 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -152,6 +152,9 @@ Parallel tests & \compactfeatureref{parallel-tests} &
 \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
 \t{src_compile}, \t{src_test}, \t{src_install} \\
 
+Accumulate \t{RESTRICT} etc. & \compactfeatureref{accumulate-vars} &
+No & No & No & No & Yes \\
+
 \t{AA} & \compactfeatureref{aa} &
 * & No & No & No & No \\
 
@@ -499,6 +502,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{IDEPEND}, \featureref{idepend}.
 \item Empty working directory in \t{pkg_*} phase functions, 
\featureref{phase-function-dir}.
 \item Different \t{src_prepare} implementation, \featureref{src-prepare}.
+\item \t{PROPERTIES} and \t{RESTRICT} accumulated across eclasses, 
\featureref{accumulate-vars}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/eclasses.tex b/eclasses.tex
index 7f4ba67..a92ce1f 100644
--- a/eclasses.tex
+++ b/eclasses.tex
@@ -34,11 +34,28 @@ The \t{inherit} command must also ensure that:
 
 \section{Eclass-defined Metadata Keys}
 
-The \t{IUSE}, \t{REQUIRED_USE}, \t{DEPEND}, \t{BDEPEND}, \t{RDEPEND}, 
\t{PDEPEND} and \t{IDEPEND}
-variables are handled specially when set by an eclass. They must be 
accumulated across eclasses,
-appending the value set by each eclass to the resulting value after the 
previous one is loaded.
-Then the eclass-defined value is appended to that defined by the ebuild. In 
the case of \t{RDEPEND},
-this is done after the implicit \t{RDEPEND} rules in 
section~\ref{sec:rdepend-depend} are applied.
+\featurelabel{accumulate-vars} The \t{IUSE}, \t{REQUIRED_USE}, \t{DEPEND}, 
\t{BDEPEND}, \t{RDEPEND},
+\t{PDEPEND} and \t{IDEPEND} variables are handled specially when set by an 
eclass. They must be
+accumulated across eclasses, appending the value set by each eclass to the 
resulting value after
+the previous one is loaded. For EAPIs listed in 
table~\ref{tab:accumulate-vars} as accumulating
+\t{PROPERTIES} and \t{RESTRICT}, the same is true for these variables. Then 
the eclass-defined
+value is appended to that defined by the ebuild. In the case of \t{RDEPEND}, 
this is done after
+the implicit \t{RDEPEND} rules in section~\ref{sec:rdepend-depend} are applied.
+
+\ChangeWhenAddingAnEAPI{8}
+\begin{centertable}{EAPIs accumulating \t{PROPERTIES} and \t{RESTRICT} across 
eclasses}
+\label{tab:accumulate-vars}
+\begin{tabular}{lll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Accumulates \t{PROPERTIES}?}} &
+  \multicolumn{1}{c}{\textbf{Accumulates \t{RESTRICT}?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7  & No  & No  \\
+  8   & Yes & Yes \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
 
 \section{EXPORT_FUNCTIONS}
 



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

2021-05-27 Thread Ulrich Müller
commit: 77f9d02790283c283ed7d85413348038fb9b91a4
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun May 23 14:37:05 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Thu May 27 19:15:25 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=77f9d027

Rearrange listings of phase functions

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

 eapi-differences.tex |  10 ++--
 ebuild-functions.tex | 164 ---
 2 files changed, 82 insertions(+), 92 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 08c4e9f..842e09f 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -349,7 +349,7 @@ EAPI 1 is EAPI 0 with the following changes:
 \begin{compactitem}
 \item \t{IUSE} defaults, \featureref{iuse-defaults}.
 \item Slot dependencies, \featureref{slot-deps}.
-\item Different \t{src_compile} implementation, \featureref{src-compile-1}.
+\item Different \t{src_compile} implementation, \featureref{src-compile}.
 \end{compactitem}
 
 \section{EAPI 2}
@@ -362,7 +362,7 @@ EAPI 2 is EAPI 1 with the following changes:
 \item \t{!}\ and \t{!!}\ blockers, \featureref{bang-strength}.
 \item \t{src_prepare}, \featureref{src-prepare}.
 \item \t{src_configure}, \featureref{src-configure}.
-\item Different \t{src_compile} implementation, \featureref{src-compile-2}.
+\item Different \t{src_compile} implementation, \featureref{src-compile}.
 \item \t{default_} phase functions for phases \t{pkg_nofetch}, \t{src_unpack}, 
\t{src_prepare},
 \t{src_configure}, \t{src_compile} and \t{src_test}; 
\featureref{default-phase-funcs}.
 \item \t{doman} language detection by filename, \featureref{doman-langs}.
@@ -391,7 +391,7 @@ EAPI 4 is EAPI 3 with the following changes:
 \item Use dependency defaults, \featureref{use-dep-defaults}.
 \item \t{S} to \t{WORKDIR} fallback restricted, 
\featureref{s-workdir-fallback}.
 \item \t{pkg_pretend}, \featureref{pkg-pretend}.
-\item Default \t{src_install} no longer a no-op, \featureref{src-install-4}.
+\item Default \t{src_install} no longer a no-op, \featureref{src-install}.
 \item \t{pkg_info} can run on non-installed packages, \featureref{pkg-info}.
 \item \t{AA} is gone, \featureref{aa}.
 \item \t{KV} is gone, \featureref{kv}.
@@ -436,8 +436,8 @@ EAPI 6 is EAPI 5 with the following changes:
 \begin{compactitem}
 \item Bash version is 4.2, \featureref{bash-version}.
 \item \t{failglob} is enabled in global scope, \featureref{failglob}.
-\item Default \t{src_prepare} no longer a no-op, \featureref{src-prepare-6}.
-\item Different \t{src_install} implementation, \featureref{src-install-6}.
+\item Default \t{src_prepare} no longer a no-op, \featureref{src-prepare}.
+\item Different \t{src_install} implementation, \featureref{src-install}.
 \item \t{LC_CTYPE} and \t{LC_COLLATE} compatible with POSIX locale, 
\featureref{locale-settings}.
 \item \t{einstall} banned, \featureref{banned-commands}.
 \item \t{die} and \t{assert} called with \t{-n} respect \t{nonfatal}, 
\featureref{nonfatal-die}.

diff --git a/ebuild-functions.tex b/ebuild-functions.tex
index 00fd259..b224e0b 100644
--- a/ebuild-functions.tex
+++ b/ebuild-functions.tex
@@ -120,10 +120,10 @@ The \t{src_unpack} function extracts all of the package's 
sources. In EAPIs lack
 \t{src_prepare}, it may also apply patches and set up the package's build 
system for further use.
 
 The initial working directory must be \t{WORKDIR}, and the default 
implementation used when
-the ebuild lacks the \t{src_unpack} function shall behave as:
+the ebuild lacks the \t{src_unpack} function shall behave as in 
listing~\ref{lst:src-unpack-0}.
 
 \begin{listing}[H]
-\caption{\t{src_unpack}}
+\caption{\t{src_unpack}} \label{lst:src-unpack-0}
 \begin{verbatim}
 src_unpack() {
 if [[ -n ${A} ]]; then
@@ -142,23 +142,9 @@ post-unpack source preparation.
 The initial working directory is \t{S}, with an error or fallback to 
\t{WORKDIR} as discussed in
 section~\ref{sec:s-to-workdir-fallback}.
 
-\featurelabel{src-prepare-6} For EAPIs listed in 
table~\ref{tab:src-prepare-table} as using format
-6, the default implementation used when the ebuild lacks the \t{src_prepare} 
function shall behave
-as:
-
-\begin{listing}[H]
-\caption{\t{src_prepare}, format~6}
-\begin{verbatim}
-src_prepare() {
-if [[ $(declare -p PATCHES 2>/dev/null) == "declare -a"* ]]; then
-[[ -n ${PATCHES[@]} ]] && eapply "${PATCHES[@]}"
-else
-[[ -n ${PATCHES} ]] && eapply ${PATCHES}
-fi
-eapply_user
-}
-\end{verbatim}
-\end{listing}
+For EAPIs listed in table~\ref{tab:src-prepare-table} as using format~6, the 
default
+implementation used when the ebuild lacks the \t{src_prepare} function shall 
behave as in
+listing~\ref{lst:src-prepare-6}.
 
 For other EAPIs supporting \t{src_prepare}, the default implementation used 
when the ebuild lacks
 the \t{src_prepare} function is a no-op.
@@ -179,6 +165,20 @@ the \t{src_prepare} function is a no-op.
 

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

2021-05-27 Thread Ulrich Müller
commit: 54d9f8ae26de56409096082a9e07e295e3c1339d
Author: Ulrich Müller  gentoo  org>
AuthorDate: Mon May 17 19:30:41 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Thu May 27 19:15:25 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=54d9f8ae

Split the econf options table because it has become too wide

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

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

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index e74f730..817b52b 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -346,23 +346,28 @@ commands once the current phase function has returned.
 \ChangeWhenAddingAnEAPI{8}
 \begin{centertable}{Extra \t{econf} arguments for EAPIs}
 \label{tab:econf-options-table}
-\begin{tabular}{}
+\begin{tabular}{l}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{1}{P{9em}}{\textbf{-{}-disable-dependency-tracking}} &
-  \multicolumn{1}{P{5em}}{\textbf{-{}-disable-silent-rules}} &
-  \multicolumn{1}{c}{\textbf{-{}-disable-static}} &
   \multicolumn{1}{c}{\textbf{-{}-datarootdir}} &
   \multicolumn{1}{c}{\textbf{-{}-docdir}} &
   \multicolumn{1}{c}{\textbf{-{}-htmldir}} &
   \multicolumn{1}{c}{\textbf{-{}-with-sysroot}} \\
   \midrule
-  0, 1, 2, 3& No  & No  & No  & No  & No  & No  & No  \\
-  4 & Yes & No  & No  & No  & No  & No  & No  \\
-  5 & Yes & Yes & No  & No  & No  & No  & No  \\
-  6 & Yes & Yes & No  & No  & Yes & Yes & No  \\
-  7 & Yes & Yes & No  & No  & Yes & Yes & Yes \\
-  8 & Yes & Yes & Yes & Yes & Yes & Yes & Yes \\
+  0, 1, 2, 3, 4, 5  & No  & No  & No  & No  \\
+  6 & No  & Yes & Yes & No  \\
+  7 & No  & Yes & Yes & Yes \\
+  8 & Yes & Yes & Yes & Yes \\
+  \midrule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{P{5.5em}}{\textbf{-{}-disable-dependency-tracking}} &
+  \multicolumn{1}{P{5em}}{\textbf{-{}-disable-silent-rules}} &
+  \multicolumn{1}{c}{\textbf{-{}-disable-static}} & \\
+  \midrule
+  0, 1, 2, 3& No  & No  & No  & \\
+  4 & Yes & No  & No  & \\
+  5, 6, 7   & Yes & Yes & No  & \\
+  8 & Yes & Yes & Yes & \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2021-05-27 Thread Ulrich Müller
commit: 2c5789d7debc6c573ea4e486d89b678cc24a4bac
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun May 16 12:05:17 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Thu May 27 19:15:25 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=2c5789d7

EAPI 8: useq, hasv and hasq are banned

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

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index c7af2b3..a2a74b8 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -236,6 +236,15 @@ Most utilities die & \compactfeatureref{die-on-failure} &
 \t{libopts} & \compactfeatureref{banned-commands} &
 Yes & Yes & Yes & Banned & Banned \\
 
+\t{useq} & \compactfeatureref{banned-commands} &
+Yes & Yes & Yes & Yes & Banned \\
+
+\t{hasv} & \compactfeatureref{banned-commands} &
+Yes & Yes & Yes & Yes & Banned \\
+
+\t{hasq} & \compactfeatureref{banned-commands} &
+Yes & Yes & Yes & Yes & Banned \\
+
 Query command options & \compactfeatureref{pm-query-options} &
 None & \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} &
 \t{-b}, \t{-d}, \t{-r} \\
@@ -503,6 +512,8 @@ EAPI 8 is EAPI 7 with the following changes:
 \item Empty working directory in \t{pkg_*} phase functions, 
\featureref{phase-function-dir}.
 \item Different \t{src_prepare} implementation, \featureref{src-prepare}.
 \item \t{PROPERTIES} and \t{RESTRICT} accumulated across eclasses, 
\featureref{accumulate-vars}.
+\item \t{useq} banned, \featureref{banned-commands}.
+\item \t{hasv} and \t{hasq} banned, \featureref{banned-commands}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 71d1e89..c56e592 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -73,6 +73,16 @@ called, the package manager must abort the build process 
indicating an error.
   4, 5  & Yes & Yes & No  & No  & No  & No  \\
   6 & Yes & Yes & Yes & No  & No  & No  \\
   7, 8  & Yes & Yes & Yes & Yes & Yes & Yes \\
+  \midrule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{6}{c}{\textbf{Command banned?}} \\
+  \multicolumn{1}{c}{} &
+  \multicolumn{1}{c}{\textbf{\t{useq}}} &
+  \multicolumn{1}{c}{\textbf{\t{hasv}}} &
+  \multicolumn{1}{c}{\textbf{\t{hasq}}} & & & \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7  & No  & No  & No  & & & \\
+  8   & Yes & Yes & Yes & & & \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -842,6 +852,8 @@ table~\ref{tab:use-list-strictness}.
 \item[usev] The same as \t{use}, but also prints the flag name if the condition
 is met.
 \item[useq] Deprecated synonym for \t{use}.
+In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as per
+section~\ref{sec:banned-commands}.
 \item[use_with] \featurelabel{use-with} Has one-, two-, and three-argument 
forms. The first
 argument is a USE flag name, the second a \t{configure} option name 
(\t{\$\{opt\}}), defaulting
 to the same as the first argument if not provided, and the third is a 
string value
@@ -916,7 +928,11 @@ These functions check whitespace-separated lists for a 
particular value.
 \item[has] Returns shell true (0) if the first argument (a word) is found in 
the list of subsequent
 arguments, false otherwise. Guaranteed quiet.
 \item[hasv] The same as \t{has}, but also prints the first argument if found.
+In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as per
+section~\ref{sec:banned-commands}.
 \item[hasq] Deprecated synonym for \t{has}.
+In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as per
+section~\ref{sec:banned-commands}.
 \end{description}
 
 \subsection{Version manipulation and comparison commands}



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

2021-05-27 Thread Ulrich Müller
commit: 1918cf3398adac180d9a5b0ccd7d33de7a59fca7
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun May 16 19:06:02 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Thu May 27 19:15:25 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=1918cf33

EAPI 8: Default src_prepare doesn't accept options in PATCHES

Also simplify array detection by using the @a operator in parameter
expansion. This feature was introduced in bash-4.4.

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

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 842e09f..aeddb6e 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -124,7 +124,7 @@ Working directory in \t{pkg_*} phases & 
\compactfeatureref{phase-function-dir} &
 * & Yes & Yes & Yes & Yes \\
 
 \t{src_prepare} style & \compactfeatureref{src-prepare} &
-* & no-op & 6 & 6 & 6 \\
+* & no-op & 6 & 6 & 8 \\
 
 \t{src_configure} & \compactfeatureref{src-configure} &
 * & Yes & Yes & Yes & Yes \\
@@ -498,6 +498,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item Selective fetch/mirror restriction, \featureref{uri-restrict}.
 \item \t{IDEPEND}, \featureref{idepend}.
 \item Empty working directory in \t{pkg_*} phase functions, 
\featureref{phase-function-dir}.
+\item Different \t{src_prepare} implementation, \featureref{src-prepare}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/ebuild-functions.tex b/ebuild-functions.tex
index b224e0b..0c745c3 100644
--- a/ebuild-functions.tex
+++ b/ebuild-functions.tex
@@ -142,9 +142,9 @@ post-unpack source preparation.
 The initial working directory is \t{S}, with an error or fallback to 
\t{WORKDIR} as discussed in
 section~\ref{sec:s-to-workdir-fallback}.
 
-For EAPIs listed in table~\ref{tab:src-prepare-table} as using format~6, the 
default
+For EAPIs listed in table~\ref{tab:src-prepare-table} as using format 6 or~8, 
the default
 implementation used when the ebuild lacks the \t{src_prepare} function shall 
behave as in
-listing~\ref{lst:src-prepare-6}.
+listing~\ref{lst:src-prepare-6} or listing~\ref{lst:src-prepare-8}, 
respectively.
 
 For other EAPIs supporting \t{src_prepare}, the default implementation used 
when the ebuild lacks
 the \t{src_prepare} function is a no-op.
@@ -160,7 +160,8 @@ the \t{src_prepare} function is a no-op.
   \midrule
   0, 1  & No  & Not applicable \\
   2, 3, 4, 5& Yes & no-op  \\
-  6, 7, 8   & Yes & 6  \\
+  6, 7  & Yes & 6  \\
+  8 & Yes & 8  \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -179,6 +180,20 @@ src_prepare() {
 \end{verbatim}
 \end{listing}
 
+\begin{listing}[H]
+\caption{\t{src_prepare}, format~8} \label{lst:src-prepare-8}
+\begin{verbatim}
+src_prepare() {
+if [[ ${PATCHES@a} == *a* ]]; then
+[[ -n ${PATCHES[@]} ]] && eapply -- "${PATCHES[@]}"
+else
+[[ -n ${PATCHES} ]] && eapply -- ${PATCHES}
+fi
+eapply_user
+}
+\end{verbatim}
+\end{listing}
+
 \subsection{src_configure}
 
 \featurelabel{src-configure} The \t{src_configure} function is only called for 
EAPIs listed in



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

2021-05-27 Thread Ulrich Müller
commit: fb2c28771a6f69663ef60bf02d6f8ca03cb280c8
Author: Michał Górny  gentoo  org>
AuthorDate: Sun Dec 22 18:23:57 2019 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Thu May 27 19:15:25 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=fb2c2877

EAPI 8 has selective URI restrictions

Bug: https://bugs.gentoo.org/371413
Signed-off-by: Michał Górny  gentoo.org>
[Shortened "selective-uri-restrict" label to make it fit in the margin]
Signed-off-by: Ulrich Müller  gentoo.org>

 eapi-differences.tex |  4 
 ebuild-vars.tex  | 18 +-
 2 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index a334881..22f99e2 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -74,6 +74,9 @@ Bash version & \compactfeatureref{bash-version} &
 \t{SRC_URI} arrows & \compactfeatureref{src-uri-arrows} &
 * & Yes & Yes & Yes & Yes \\
 
+Selective URI restrictions & \compactfeatureref{uri-restrict} &
+No & No & No & No & Yes \\
+
 \t{RDEPEND=DEPEND} & \compactfeatureref{rdepend-depend} &
 * & No & No & No & No \\
 
@@ -486,6 +489,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \begin{compactitem}
 \item Less strict naming rules for files in \t{updates} directory, 
\featureref{updates-filenames}.
 \item Bash version is 5.0, \featureref{bash-version}.
+\item Selective fetch/mirror restriction, \featureref{uri-restrict}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index 040b02a..f6b1c26 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -169,16 +169,24 @@ on the right of the arrow. When consulting mirrors 
(except for those explicitly
 of the arrow, if \t{mirror://} is used), the filename to the right of the 
arrow shall be requested
 instead of the filename in the URI.
 
+\featurelabel{uri-restrict} In EAPIs listed in 
table~\ref{tab:uri-arrows-table} as supporting
+selective URI restrictions, the URI protocol can be prefixed by an additional 
\t{fetch+} or
+\t{mirror+} term. If the ebuild is fetch restricted, the \t{fetch+} prefix 
undoes the fetch
+restriction for the URI (but not the implied mirror restriction). If the 
ebuild is fetch or mirror
+restricted, the \t{mirror+} prefix undoes both fetch and mirror restrictions 
for the URI.
+
 \ChangeWhenAddingAnEAPI{8}
-\begin{centertable}{EAPIs supporting \t{SRC_URI} arrows}
+\begin{centertable}{EAPIs supporting \t{SRC_URI} arrows and selective URI 
restrictions}
 \label{tab:uri-arrows-table}
-\begin{tabular}{ll}
+\begin{tabular}{lll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{1}{c}{\textbf{Supports \t{SRC_URI} arrows?}} \\
+  \multicolumn{1}{c}{\textbf{Supports \t{SRC_URI} arrows?}} &
+  \multicolumn{1}{c}{\textbf{Supports selective URI restrictions?}} \\
   \midrule
-  0, 1& No  \\
-  2, 3, 4, 5, 6, 7, 8 & Yes \\
+  0, 1  & No  & No  \\
+  2, 3, 4, 5, 6, 7  & Yes & No  \\
+  8 & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2021-05-27 Thread Ulrich Müller
commit: cddf1f01d377e18db6ed2e27498bf9481f66e2f1
Author: Michał Górny  gentoo  org>
AuthorDate: Sun Dec 22 20:32:41 2019 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Thu May 27 19:15:25 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=cddf1f01

EAPI 8 has install-time dependencies (IDEPEND)

Bug: https://bugs.gentoo.org/660306
Signed-off-by: Michał Górny  gentoo.org>
[Updated as discussed in -pms mailing list]
Signed-off-by: Ulrich Müller  gentoo.org>

 dependencies.tex | 25 +
 eapi-differences.tex |  4 
 ebuild-env-vars.tex  |  5 +++--
 ebuild-vars.tex  |  1 +
 eclasses.tex | 10 +-
 metadata-cache.tex   |  2 ++
 6 files changed, 32 insertions(+), 15 deletions(-)

diff --git a/dependencies.tex b/dependencies.tex
index 3ef6fa6..f14a08c 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -21,7 +21,7 @@
   \t{src_install} & \t{DEPEND}, \t{BDEPEND} \\
   \addlinespace
   \t{pkg_preinst}, \t{pkg_postinst}, \t{pkg_prerm}, \t{pkg_postrm} &
-  \t{RDEPEND} \\
+  \t{RDEPEND}, \t{IDEPEND} \\
   \addlinespace
   \t{pkg_config} & \t{RDEPEND}, \t{PDEPEND} \\
   \bottomrule
@@ -32,7 +32,7 @@
 \label{tab:dep-class-api}
 \begin{tabular}{}
   \toprule
-& \t{BDEPEND} & \t{DEPEND} & 
\t{RDEPEND}, \t{PDEPEND} \\
+   & \t{BDEPEND}, \t{IDEPEND} & \t{DEPEND} & 
\t{RDEPEND}, \t{PDEPEND} \\
   \midrule
   Binary compatible with& \t{CBUILD}  & \t{CHOST}  & 
\t{CHOST} \\
   Base unprefixed path  & \t{/}   & \t{\$\{SYSROOT\}}  & 
\t{\$\{ROOT\}}\\
@@ -82,16 +82,24 @@ as supporting \t{BDEPEND}, the build dependencies are split 
into two subclasses:
 dependency.
 \end{compactitem}
 
+\featurelabel{idepend} Additionally, in EAPIs listed in 
table~\ref{tab:depend-table} as supporting
+\t{IDEPEND}, install-time dependencies can be specified. These dependencies 
are binary compatible
+with the native build system (\t{CBUILD}). Ebuilds are allowed to call them in 
\t{pkg_preinst} and
+\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}
 \begin{centertable}{EAPIs supporting additional dependency types}
 \label{tab:depend-table}
-\begin{tabular}{ll}
+\begin{tabular}{lll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{1}{c}{\textbf{Supports \t{BDEPEND}?}} \\
+  \multicolumn{1}{c}{\textbf{Supports \t{BDEPEND}?}} &
+  \multicolumn{1}{c}{\textbf{Supports \t{IDEPEND}?}} \\
   \midrule
-  0, 1, 2, 3, 4, 5, 6 & No  \\
-  7, 8& Yes \\
+  0, 1, 2, 3, 4, 5, 6 & No  & No  \\
+  7   & Yes & No  \\
+  8   & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -111,7 +119,7 @@ be surrounded on both sides by whitespace, except at the 
start and end of the st
 
 \begin{compactitem}
 \item A package dependency specification. Permitted in \t{DEPEND}, 
\t{BDEPEND}, \t{RDEPEND},
-\t{PDEPEND}.
+\t{PDEPEND}, \t{IDEPEND}.
 \item A URI, in the form \t{proto://host/path}. Permitted in \t{HOMEPAGE} and 
\t{SRC_URI}\@.
 In EAPIs listed in table~\ref{tab:uri-arrows-table} as supporting 
\t{SRC_URI} arrows, may
 optionally be followed by whitespace, then \t{->}, then whitespace, then a 
simple filename when
@@ -129,7 +137,8 @@ be surrounded on both sides by whitespace, except at the 
start and end of the st
 followed by an open parenthesis, followed by whitespace, followed by one 
or more
 of (a dependency item of any kind followed by whitespace), followed by a 
close parenthesis.
 More formally: \t{any-of} \t{::=} \t{'||' whitespace '(' whitespace (item 
whitespace)+ ')'}.
-Permitted in \t{DEPEND}, \t{BDEPEND}, \t{RDEPEND}, \t{PDEPEND}, 
\t{LICENSE}, \t{REQUIRED_USE}.
+Permitted in \t{DEPEND}, \t{BDEPEND}, \t{RDEPEND}, \t{PDEPEND}, 
\t{IDEPEND}, \t{LICENSE},
+\t{REQUIRED_USE}.
 \item An exactly-one-of group, which has the same format as the any-of group, 
but begins with the
 string \t{\textasciicircum\textasciicircum} instead. Permitted in 
\t{REQUIRED_USE}.
 \item \featurelabel{at-most-one-of} An at-most-one-of group, which has the 
same format as the

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 22f99e2..f3af563 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -86,6 +86,9 @@ Selective URI restrictions & \compactfeatureref{uri-restrict} 
&
 \t{BDEPEND} & \compactfeatureref{bdepend} &
 No & No & No & Yes & Yes \\
 
+\t{IDEPEND} & \compactfeatureref{idepend} &
+No & No & No & No & Yes \\
+
 \t{??\ ( )} groups & \compactfeatureref{at-most-one-of} &
 No & Yes & Yes & Yes & Yes \\
 
@@ -490,6 +493,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item Less 

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

2021-05-27 Thread Ulrich Müller
commit: d600ada4b2d26ced9f0454d927f0e6552015f980
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun May 23 09:45:56 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Thu May 27 19:15:25 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=d600ada4

EAPI 8 has an empty working directory in pkg_* phases

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

 eapi-differences.tex |  4 
 ebuild-functions.tex | 26 +-
 2 files changed, 25 insertions(+), 5 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index f3af563..08c4e9f 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -111,6 +111,9 @@ Use dependencies & \compactfeatureref{use-deps} &
 \t{!!}\ blockers & \compactfeatureref{bang-strength} &
 * & Strong & Strong & Strong & Strong \\
 
+Working directory in \t{pkg_*} phases & \compactfeatureref{phase-function-dir} 
&
+Any & Any & Any & Any & Empty \\
+
 \t{S} to \t{WORKDIR} fallback & \compactfeatureref{s-workdir-fallback} &
 * & Conditional & Conditional & Conditional & Conditional \\
 
@@ -494,6 +497,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item Bash version is 5.0, \featureref{bash-version}.
 \item Selective fetch/mirror restriction, \featureref{uri-restrict}.
 \item \t{IDEPEND}, \featureref{idepend}.
+\item Empty working directory in \t{pkg_*} phase functions, 
\featureref{phase-function-dir}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/ebuild-functions.tex b/ebuild-functions.tex
index ffdea16..00fd259 100644
--- a/ebuild-functions.tex
+++ b/ebuild-functions.tex
@@ -22,11 +22,13 @@ Ebuilds must not call nor assume the existence of any phase 
functions.
 \subsection{Initial working directories}
 \label{sec:s-to-workdir-fallback}
 
-Some functions may assume that their initial working directory is set to a 
particular location;
-these are noted below. If no initial working directory is mandated, it may be 
set to anything and
-the ebuild must not rely upon a particular location for it. The ebuild 
\emph{may} assume that the
-initial working directory for any phase is a trusted location that may only be 
written to by a
-privileged user and group.
+\featurelabel{phase-function-dir} Some functions may assume that their initial 
working directory is
+set to a particular location; these are noted below. If no initial working 
directory is mandated,
+then for EAPIs listed in table~\ref{tab:function-dirs} as having an empty 
directory, it must be set
+to a dedicated directory that is empty at the start of the function and may be 
read-only. For other
+EAPIs, it may be set to anything. The ebuild must not rely upon a particular 
location for it.
+The ebuild \emph{may} assume that the initial working directory for any phase 
is a trusted location
+that may only be written to by a privileged user and group.
 
 \featurelabel{s-workdir-fallback} Some functions are described as having an 
initial working
 directory of \t{S} with an error or fallback to \t{WORKDIR}\@. For EAPIs 
listed in
@@ -44,6 +46,20 @@ fallback to \t{WORKDIR} is used:
 executed, are in \t{DEFINED_PHASES}.
 \end{compactitem}
 
+\ChangeWhenAddingAnEAPI{8}
+\begin{centertable}{Initial working directory in \t{pkg_*} phase functions for 
EAPIs}
+\label{tab:function-dirs}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Initial working directory?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7  & Any   \\
+  8   & Empty \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \ChangeWhenAddingAnEAPI{8}
 \begin{centertable}{EAPIs with \t{S} to \t{WORKDIR} fallbacks}
 \label{tab:s-fallback-table}



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

2021-05-27 Thread Ulrich Müller
commit: a6094dbb3a288bd728d554953f44761167466466
Author: Ulrich Müller  gentoo  org>
AuthorDate: Tue May 25 15:59:13 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Thu May 27 19:15:20 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=a6094dbb

Ban nameref variables from exported and default scope

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

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

diff --git a/ebuild-format.tex b/ebuild-format.tex
index 4929ba4..25ba28e 100644
--- a/ebuild-format.tex
+++ b/ebuild-format.tex
@@ -11,6 +11,8 @@ compatibility settings (e.\,g.\ the \t{BASH_COMPAT} variable) 
are not exported t
 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.
 
+Name reference variables (introduced in bash version~4.3) must not be used, 
except in local scope.
+
 The file encoding must be UTF-8 with Unix-style newlines. When sourced, the 
ebuild must define
 certain variables and functions (see chapters~\ref{ch:ebuild-vars} 
and~\ref{ch:ebuild-functions}
 for specific information), and must not call any external programs, write 
anything to standard



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

2021-05-26 Thread Ulrich Müller
commit: b645b508eebf064d894bb7497edc9f7d47da1748
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun May 16 18:46:09 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Tue May 25 20:03:56 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=b645b508

EAPI 8 accumulates PROPERTIES and RESTRICT across eclasses

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

 eapi-differences.tex |  4 
 eclasses.tex | 27 ++-
 2 files changed, 26 insertions(+), 5 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index aeddb6e..4cd6b8b 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -152,6 +152,9 @@ Parallel tests & \compactfeatureref{parallel-tests} &
 \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
 \t{src_compile}, \t{src_test}, \t{src_install} \\
 
+Accumulate \t{RESTRICT} etc. & \compactfeatureref{accumulate-vars} &
+No & No & No & No & Yes \\
+
 \t{AA} & \compactfeatureref{aa} &
 * & No & No & No & No \\
 
@@ -499,6 +502,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{IDEPEND}, \featureref{idepend}.
 \item Empty working directory in \t{pkg_*} phase functions, 
\featureref{phase-function-dir}.
 \item Different \t{src_prepare} implementation, \featureref{src-prepare}.
+\item \t{PROPERTIES}, \t{RESTRICT} accumulated across eclasses, 
\featureref{accumulate-vars}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/eclasses.tex b/eclasses.tex
index 7f4ba67..a92ce1f 100644
--- a/eclasses.tex
+++ b/eclasses.tex
@@ -34,11 +34,28 @@ The \t{inherit} command must also ensure that:
 
 \section{Eclass-defined Metadata Keys}
 
-The \t{IUSE}, \t{REQUIRED_USE}, \t{DEPEND}, \t{BDEPEND}, \t{RDEPEND}, 
\t{PDEPEND} and \t{IDEPEND}
-variables are handled specially when set by an eclass. They must be 
accumulated across eclasses,
-appending the value set by each eclass to the resulting value after the 
previous one is loaded.
-Then the eclass-defined value is appended to that defined by the ebuild. In 
the case of \t{RDEPEND},
-this is done after the implicit \t{RDEPEND} rules in 
section~\ref{sec:rdepend-depend} are applied.
+\featurelabel{accumulate-vars} The \t{IUSE}, \t{REQUIRED_USE}, \t{DEPEND}, 
\t{BDEPEND}, \t{RDEPEND},
+\t{PDEPEND} and \t{IDEPEND} variables are handled specially when set by an 
eclass. They must be
+accumulated across eclasses, appending the value set by each eclass to the 
resulting value after
+the previous one is loaded. For EAPIs listed in 
table~\ref{tab:accumulate-vars} as accumulating
+\t{PROPERTIES} and \t{RESTRICT}, the same is true for these variables. Then 
the eclass-defined
+value is appended to that defined by the ebuild. In the case of \t{RDEPEND}, 
this is done after
+the implicit \t{RDEPEND} rules in section~\ref{sec:rdepend-depend} are applied.
+
+\ChangeWhenAddingAnEAPI{8}
+\begin{centertable}{EAPIs accumulating \t{PROPERTIES} and \t{RESTRICT} across 
eclasses}
+\label{tab:accumulate-vars}
+\begin{tabular}{lll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Accumulates \t{PROPERTIES}?}} &
+  \multicolumn{1}{c}{\textbf{Accumulates \t{RESTRICT}?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7  & No  & No  \\
+  8   & Yes & Yes \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
 
 \section{EXPORT_FUNCTIONS}
 



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

2021-05-26 Thread Ulrich Müller
commit: d2f7633afa390ecd9e7cfd98648166922f955dce
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun May 16 12:05:17 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Tue May 25 20:03:56 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=d2f7633a

EAPI 8: useq, hasv and hasq are banned

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

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 4cd6b8b..8b1f7a6 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -236,6 +236,15 @@ Most utilities die & \compactfeatureref{die-on-failure} &
 \t{libopts} & \compactfeatureref{banned-commands} &
 Yes & Yes & Yes & Banned & Banned \\
 
+\t{useq} & \compactfeatureref{banned-commands} &
+Yes & Yes & Yes & Yes & Banned \\
+
+\t{hasv} & \compactfeatureref{banned-commands} &
+Yes & Yes & Yes & Yes & Banned \\
+
+\t{hasq} & \compactfeatureref{banned-commands} &
+Yes & Yes & Yes & Yes & Banned \\
+
 Query command options & \compactfeatureref{pm-query-options} &
 None & \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} &
 \t{-b}, \t{-d}, \t{-r} \\
@@ -503,6 +512,8 @@ EAPI 8 is EAPI 7 with the following changes:
 \item Empty working directory in \t{pkg_*} phase functions, 
\featureref{phase-function-dir}.
 \item Different \t{src_prepare} implementation, \featureref{src-prepare}.
 \item \t{PROPERTIES}, \t{RESTRICT} accumulated across eclasses, 
\featureref{accumulate-vars}.
+\item \t{useq} banned, \featureref{banned-commands}.
+\item \t{hasv} and \t{hasq} banned, \featureref{banned-commands}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 71d1e89..c56e592 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -73,6 +73,16 @@ called, the package manager must abort the build process 
indicating an error.
   4, 5  & Yes & Yes & No  & No  & No  & No  \\
   6 & Yes & Yes & Yes & No  & No  & No  \\
   7, 8  & Yes & Yes & Yes & Yes & Yes & Yes \\
+  \midrule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{6}{c}{\textbf{Command banned?}} \\
+  \multicolumn{1}{c}{} &
+  \multicolumn{1}{c}{\textbf{\t{useq}}} &
+  \multicolumn{1}{c}{\textbf{\t{hasv}}} &
+  \multicolumn{1}{c}{\textbf{\t{hasq}}} & & & \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7  & No  & No  & No  & & & \\
+  8   & Yes & Yes & Yes & & & \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -842,6 +852,8 @@ table~\ref{tab:use-list-strictness}.
 \item[usev] The same as \t{use}, but also prints the flag name if the condition
 is met.
 \item[useq] Deprecated synonym for \t{use}.
+In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as per
+section~\ref{sec:banned-commands}.
 \item[use_with] \featurelabel{use-with} Has one-, two-, and three-argument 
forms. The first
 argument is a USE flag name, the second a \t{configure} option name 
(\t{\$\{opt\}}), defaulting
 to the same as the first argument if not provided, and the third is a 
string value
@@ -916,7 +928,11 @@ These functions check whitespace-separated lists for a 
particular value.
 \item[has] Returns shell true (0) if the first argument (a word) is found in 
the list of subsequent
 arguments, false otherwise. Guaranteed quiet.
 \item[hasv] The same as \t{has}, but also prints the first argument if found.
+In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as per
+section~\ref{sec:banned-commands}.
 \item[hasq] Deprecated synonym for \t{has}.
+In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as per
+section~\ref{sec:banned-commands}.
 \end{description}
 
 \subsection{Version manipulation and comparison commands}



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

2021-05-26 Thread Ulrich Müller
commit: 35bfeddf102e90f7d67b9aacc7537e63d1f281d7
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun May 16 19:06:02 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Tue May 25 20:00:27 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=35bfeddf

EAPI 8: Default src_prepare doesn't accept options in PATCHES

Also simplify array detection by using the @a operator in parameter
expansion. This feature was introduced in bash-4.4.

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

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 842e09f..aeddb6e 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -124,7 +124,7 @@ Working directory in \t{pkg_*} phases & 
\compactfeatureref{phase-function-dir} &
 * & Yes & Yes & Yes & Yes \\
 
 \t{src_prepare} style & \compactfeatureref{src-prepare} &
-* & no-op & 6 & 6 & 6 \\
+* & no-op & 6 & 6 & 8 \\
 
 \t{src_configure} & \compactfeatureref{src-configure} &
 * & Yes & Yes & Yes & Yes \\
@@ -498,6 +498,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item Selective fetch/mirror restriction, \featureref{uri-restrict}.
 \item \t{IDEPEND}, \featureref{idepend}.
 \item Empty working directory in \t{pkg_*} phase functions, 
\featureref{phase-function-dir}.
+\item Different \t{src_prepare} implementation, \featureref{src-prepare}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/ebuild-functions.tex b/ebuild-functions.tex
index b224e0b..0c745c3 100644
--- a/ebuild-functions.tex
+++ b/ebuild-functions.tex
@@ -142,9 +142,9 @@ post-unpack source preparation.
 The initial working directory is \t{S}, with an error or fallback to 
\t{WORKDIR} as discussed in
 section~\ref{sec:s-to-workdir-fallback}.
 
-For EAPIs listed in table~\ref{tab:src-prepare-table} as using format~6, the 
default
+For EAPIs listed in table~\ref{tab:src-prepare-table} as using format 6 or~8, 
the default
 implementation used when the ebuild lacks the \t{src_prepare} function shall 
behave as in
-listing~\ref{lst:src-prepare-6}.
+listing~\ref{lst:src-prepare-6} or listing~\ref{lst:src-prepare-8}, 
respectively.
 
 For other EAPIs supporting \t{src_prepare}, the default implementation used 
when the ebuild lacks
 the \t{src_prepare} function is a no-op.
@@ -160,7 +160,8 @@ the \t{src_prepare} function is a no-op.
   \midrule
   0, 1  & No  & Not applicable \\
   2, 3, 4, 5& Yes & no-op  \\
-  6, 7, 8   & Yes & 6  \\
+  6, 7  & Yes & 6  \\
+  8 & Yes & 8  \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -179,6 +180,20 @@ src_prepare() {
 \end{verbatim}
 \end{listing}
 
+\begin{listing}[H]
+\caption{\t{src_prepare}, format~8} \label{lst:src-prepare-8}
+\begin{verbatim}
+src_prepare() {
+if [[ ${PATCHES@a} == *a* ]]; then
+[[ -n ${PATCHES[@]} ]] && eapply -- "${PATCHES[@]}"
+else
+[[ -n ${PATCHES} ]] && eapply -- ${PATCHES}
+fi
+eapply_user
+}
+\end{verbatim}
+\end{listing}
+
 \subsection{src_configure}
 
 \featurelabel{src-configure} The \t{src_configure} function is only called for 
EAPIs listed in



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

2021-05-26 Thread Ulrich Müller
commit: 6b3cf2189ce9e661384b6d4e360e5bf839eb750c
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun May 23 14:37:05 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Tue May 25 19:56:56 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=6b3cf218

Rearrange listings of phase functions

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

 eapi-differences.tex |  10 ++--
 ebuild-functions.tex | 164 ---
 2 files changed, 82 insertions(+), 92 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 08c4e9f..842e09f 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -349,7 +349,7 @@ EAPI 1 is EAPI 0 with the following changes:
 \begin{compactitem}
 \item \t{IUSE} defaults, \featureref{iuse-defaults}.
 \item Slot dependencies, \featureref{slot-deps}.
-\item Different \t{src_compile} implementation, \featureref{src-compile-1}.
+\item Different \t{src_compile} implementation, \featureref{src-compile}.
 \end{compactitem}
 
 \section{EAPI 2}
@@ -362,7 +362,7 @@ EAPI 2 is EAPI 1 with the following changes:
 \item \t{!}\ and \t{!!}\ blockers, \featureref{bang-strength}.
 \item \t{src_prepare}, \featureref{src-prepare}.
 \item \t{src_configure}, \featureref{src-configure}.
-\item Different \t{src_compile} implementation, \featureref{src-compile-2}.
+\item Different \t{src_compile} implementation, \featureref{src-compile}.
 \item \t{default_} phase functions for phases \t{pkg_nofetch}, \t{src_unpack}, 
\t{src_prepare},
 \t{src_configure}, \t{src_compile} and \t{src_test}; 
\featureref{default-phase-funcs}.
 \item \t{doman} language detection by filename, \featureref{doman-langs}.
@@ -391,7 +391,7 @@ EAPI 4 is EAPI 3 with the following changes:
 \item Use dependency defaults, \featureref{use-dep-defaults}.
 \item \t{S} to \t{WORKDIR} fallback restricted, 
\featureref{s-workdir-fallback}.
 \item \t{pkg_pretend}, \featureref{pkg-pretend}.
-\item Default \t{src_install} no longer a no-op, \featureref{src-install-4}.
+\item Default \t{src_install} no longer a no-op, \featureref{src-install}.
 \item \t{pkg_info} can run on non-installed packages, \featureref{pkg-info}.
 \item \t{AA} is gone, \featureref{aa}.
 \item \t{KV} is gone, \featureref{kv}.
@@ -436,8 +436,8 @@ EAPI 6 is EAPI 5 with the following changes:
 \begin{compactitem}
 \item Bash version is 4.2, \featureref{bash-version}.
 \item \t{failglob} is enabled in global scope, \featureref{failglob}.
-\item Default \t{src_prepare} no longer a no-op, \featureref{src-prepare-6}.
-\item Different \t{src_install} implementation, \featureref{src-install-6}.
+\item Default \t{src_prepare} no longer a no-op, \featureref{src-prepare}.
+\item Different \t{src_install} implementation, \featureref{src-install}.
 \item \t{LC_CTYPE} and \t{LC_COLLATE} compatible with POSIX locale, 
\featureref{locale-settings}.
 \item \t{einstall} banned, \featureref{banned-commands}.
 \item \t{die} and \t{assert} called with \t{-n} respect \t{nonfatal}, 
\featureref{nonfatal-die}.

diff --git a/ebuild-functions.tex b/ebuild-functions.tex
index 00fd259..b224e0b 100644
--- a/ebuild-functions.tex
+++ b/ebuild-functions.tex
@@ -120,10 +120,10 @@ The \t{src_unpack} function extracts all of the package's 
sources. In EAPIs lack
 \t{src_prepare}, it may also apply patches and set up the package's build 
system for further use.
 
 The initial working directory must be \t{WORKDIR}, and the default 
implementation used when
-the ebuild lacks the \t{src_unpack} function shall behave as:
+the ebuild lacks the \t{src_unpack} function shall behave as in 
listing~\ref{lst:src-unpack-0}.
 
 \begin{listing}[H]
-\caption{\t{src_unpack}}
+\caption{\t{src_unpack}} \label{lst:src-unpack-0}
 \begin{verbatim}
 src_unpack() {
 if [[ -n ${A} ]]; then
@@ -142,23 +142,9 @@ post-unpack source preparation.
 The initial working directory is \t{S}, with an error or fallback to 
\t{WORKDIR} as discussed in
 section~\ref{sec:s-to-workdir-fallback}.
 
-\featurelabel{src-prepare-6} For EAPIs listed in 
table~\ref{tab:src-prepare-table} as using format
-6, the default implementation used when the ebuild lacks the \t{src_prepare} 
function shall behave
-as:
-
-\begin{listing}[H]
-\caption{\t{src_prepare}, format~6}
-\begin{verbatim}
-src_prepare() {
-if [[ $(declare -p PATCHES 2>/dev/null) == "declare -a"* ]]; then
-[[ -n ${PATCHES[@]} ]] && eapply "${PATCHES[@]}"
-else
-[[ -n ${PATCHES} ]] && eapply ${PATCHES}
-fi
-eapply_user
-}
-\end{verbatim}
-\end{listing}
+For EAPIs listed in table~\ref{tab:src-prepare-table} as using format~6, the 
default
+implementation used when the ebuild lacks the \t{src_prepare} function shall 
behave as in
+listing~\ref{lst:src-prepare-6}.
 
 For other EAPIs supporting \t{src_prepare}, the default implementation used 
when the ebuild lacks
 the \t{src_prepare} function is a no-op.
@@ -179,6 +165,20 @@ the \t{src_prepare} function is a no-op.
 

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

2021-05-26 Thread Ulrich Müller
commit: a5fff31f4571e24d25ff87ee528720221253610d
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun May 23 09:45:56 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Tue May 25 19:56:56 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=a5fff31f

EAPI 8 has an empty working directory in pkg_* phases

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

 eapi-differences.tex |  4 
 ebuild-functions.tex | 26 +-
 2 files changed, 25 insertions(+), 5 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index f3af563..08c4e9f 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -111,6 +111,9 @@ Use dependencies & \compactfeatureref{use-deps} &
 \t{!!}\ blockers & \compactfeatureref{bang-strength} &
 * & Strong & Strong & Strong & Strong \\
 
+Working directory in \t{pkg_*} phases & \compactfeatureref{phase-function-dir} 
&
+Any & Any & Any & Any & Empty \\
+
 \t{S} to \t{WORKDIR} fallback & \compactfeatureref{s-workdir-fallback} &
 * & Conditional & Conditional & Conditional & Conditional \\
 
@@ -494,6 +497,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item Bash version is 5.0, \featureref{bash-version}.
 \item Selective fetch/mirror restriction, \featureref{uri-restrict}.
 \item \t{IDEPEND}, \featureref{idepend}.
+\item Empty working directory in \t{pkg_*} phase functions, 
\featureref{phase-function-dir}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/ebuild-functions.tex b/ebuild-functions.tex
index ffdea16..00fd259 100644
--- a/ebuild-functions.tex
+++ b/ebuild-functions.tex
@@ -22,11 +22,13 @@ Ebuilds must not call nor assume the existence of any phase 
functions.
 \subsection{Initial working directories}
 \label{sec:s-to-workdir-fallback}
 
-Some functions may assume that their initial working directory is set to a 
particular location;
-these are noted below. If no initial working directory is mandated, it may be 
set to anything and
-the ebuild must not rely upon a particular location for it. The ebuild 
\emph{may} assume that the
-initial working directory for any phase is a trusted location that may only be 
written to by a
-privileged user and group.
+\featurelabel{phase-function-dir} Some functions may assume that their initial 
working directory is
+set to a particular location; these are noted below. If no initial working 
directory is mandated,
+then for EAPIs listed in table~\ref{tab:function-dirs} as having an empty 
directory, it must be set
+to a dedicated directory that is empty at the start of the function and may be 
read-only. For other
+EAPIs, it may be set to anything. The ebuild must not rely upon a particular 
location for it.
+The ebuild \emph{may} assume that the initial working directory for any phase 
is a trusted location
+that may only be written to by a privileged user and group.
 
 \featurelabel{s-workdir-fallback} Some functions are described as having an 
initial working
 directory of \t{S} with an error or fallback to \t{WORKDIR}\@. For EAPIs 
listed in
@@ -44,6 +46,20 @@ fallback to \t{WORKDIR} is used:
 executed, are in \t{DEFINED_PHASES}.
 \end{compactitem}
 
+\ChangeWhenAddingAnEAPI{8}
+\begin{centertable}{Initial working directory in \t{pkg_*} phase functions for 
EAPIs}
+\label{tab:function-dirs}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Initial working directory?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7  & Any   \\
+  8   & Empty \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \ChangeWhenAddingAnEAPI{8}
 \begin{centertable}{EAPIs with \t{S} to \t{WORKDIR} fallbacks}
 \label{tab:s-fallback-table}



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

2021-05-26 Thread Ulrich Müller
commit: d5678d213a6aa60e4e917e4097bad243d043539f
Author: Ulrich Müller  gentoo  org>
AuthorDate: Tue May 25 15:59:13 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Tue May 25 19:56:47 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=d5678d21

Ban nameref variables from exported and default scope

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

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

diff --git a/ebuild-format.tex b/ebuild-format.tex
index 4929ba4..3f45242 100644
--- a/ebuild-format.tex
+++ b/ebuild-format.tex
@@ -11,6 +11,8 @@ compatibility settings (e.\,g.\ the \t{BASH_COMPAT} variable) 
are not exported t
 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.
 
+Name reference variables (introduced in Bash version~4.3) must not be used, 
except in local scope.
+
 The file encoding must be UTF-8 with Unix-style newlines. When sourced, the 
ebuild must define
 certain variables and functions (see chapters~\ref{ch:ebuild-vars} 
and~\ref{ch:ebuild-functions}
 for specific information), and must not call any external programs, write 
anything to standard



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

2021-05-26 Thread Ulrich Müller
commit: dfbcc109fabee8ec703e0ae7a91105f933550698
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun May 16 18:59:37 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Tue May 25 20:03:56 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=dfbcc109

EAPI 8: usev has an optional second argument

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

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 16820dd..f0ea62c 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -317,6 +317,9 @@ Controllable stripping & \compactfeatureref{dostrip} &
 \t{dostrip} & \compactfeatureref{dostrip} &
 No & No & No & Yes & Yes \\
 
+\t{usev} second arg & \compactfeatureref{usev} &
+No & No & No & No & Yes \\
+
 \t{use_with} empty third arg & \compactfeatureref{use-with} &
 * & Yes & Yes & Yes & Yes \\
 
@@ -529,6 +532,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{dosym} can create relative paths, \featureref{dosym-relative}.
 \item \t{insopts} no longer affects \t{doconfd}, \t{doenvd} and \t{doheader}, 
\featureref{insopts}.
 \item \t{exeopts} no longer affects \t{doinitd}, \featureref{exeopts}.
+\item \t{usev} supports an optional second argument, \featureref{usev}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 58254fa..eac17de 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -936,15 +936,17 @@ table~\ref{tab:use-list-strictness}.
 \item[use] Returns shell true (0) if the first argument (a \t{USE} flag name) 
is enabled, false
 otherwise.  If the flag name is prefixed with \t{!}, returns true if the 
flag is disabled, and
 false if it is enabled. It is guaranteed that this command is quiet.
-\item[usev] The same as \t{use}, but also prints the flag name if the condition
-is met.
+\item[usev] \featurelabel{usev} The same as \t{use}, but also prints the flag 
name if the condition
+is met. In EAPIs listed in table~\ref{tab:use-list-args} as supporting an 
optional second
+argument for \t{usev}, prints the second argument instead, if it is 
specified and if the
+condition is met.
 \item[useq] Deprecated synonym for \t{use}.
 In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as per
 section~\ref{sec:banned-commands}.
 \item[use_with] \featurelabel{use-with} Has one-, two-, and three-argument 
forms. The first
 argument is a USE flag name, the second a \t{configure} option name 
(\t{\$\{opt\}}), defaulting
 to the same as the first argument if not provided, and the third is a 
string value
-(\t{\$\{value\}}). For EAPIs listed in table~\ref{tab:use-with-third-arg} 
as not supporting it,
+(\t{\$\{value\}}). For EAPIs listed in table~\ref{tab:use-list-args} as 
not supporting it,
 an empty third argument is treated as if it weren't provided. If the USE 
flag is set, outputs
 \t{-{}-with-\$\{opt\}=\$\{value\}} if the third argument was provided, and
 \t{-{}-with-\$\{opt\}} otherwise. If the flag is not set, then it outputs
@@ -979,15 +981,18 @@ table~\ref{tab:use-list-strictness}.
 \end{centertable}
 
 \ChangeWhenAddingAnEAPI{8}
-\begin{centertable}{EAPIs supporting empty third argument in \t{use_with} and 
\t{use_enable}}
-\label{tab:use-with-third-arg}
-\begin{tabular}{ll}
+\begin{centertable}{\t{usev}, \t{use_with} and \t{use_enable} arguments for 
EAPIs}
+\label{tab:use-list-args}
+\begin{tabular}{lll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{1}{c}{\textbf{Supports empty third argument?}} \\
+  \multicolumn{1}{P{8em}}{\textbf{\t{usev} has optional second argument?}} 
&
+  \multicolumn{1}{P{14em}}{\textbf{\t{use_with} and \t{use_enable} support 
empty third
+argument?}} \\
   \midrule
-  0, 1, 2, 3& No  \\
-  4, 5, 6, 7, 8 & Yes \\
+  0, 1, 2, 3& No  & No  \\
+  4, 5, 6, 7& No  & Yes \\
+  8 & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2021-05-26 Thread Ulrich Müller
commit: b2b72987b46e4a677c57a40a1dbac913b77b44ce
Author: Michał Górny  gentoo  org>
AuthorDate: Tue Dec 24 09:46:26 2019 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Tue May 25 20:03:56 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=b2b72987

EAPI 8 has econf passing --datarootdir

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

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 8b1f7a6..41f7294 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -272,7 +272,7 @@ Output commands use stdout & 
\compactfeatureref{output-no-stdout} &
 disable dependency tracking, disable silent rules &
 disable dependency tracking, disable silent rules, docdir, htmldir &
 disable dependency tracking, disable silent rules, docdir, htmldir, with 
sysroot &
-disable dependency tracking, disable silent rules, docdir, htmldir, with 
sysroot \\
+disable dependency tracking, disable silent rules, datarootdir, docdir, 
htmldir, with sysroot \\
 
 \t{dodoc -r} & \compactfeatureref{dodoc} &
 * & Yes & Yes & Yes & Yes \\
@@ -514,6 +514,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{PROPERTIES}, \t{RESTRICT} accumulated across eclasses, 
\featureref{accumulate-vars}.
 \item \t{useq} banned, \featureref{banned-commands}.
 \item \t{hasv} and \t{hasq} banned, \featureref{banned-commands}.
+\item \t{econf} adds \t{-{}-datarootdir}, \featureref{econf-options}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index c56e592..7909bdd 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -312,6 +312,9 @@ commands once the current phase function has returned.
 \item \t{-{}-mandir} must be \t{\$\{EPREFIX\}/usr/share/man}
 \item \t{-{}-infodir} must be \t{\$\{EPREFIX\}/usr/share/info}
 \item \t{-{}-datadir} must be \t{\$\{EPREFIX\}/usr/share}
+\item \t{-{}-datarootdir} must be \t{\$\{EPREFIX\}/usr/share}, 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{-{}-datarootdir} occurs in the output of \t{configure 
-{}-help}.
 \item \t{-{}-sysconfdir} must be \t{\$\{EPREFIX\}/etc}
 \item \t{-{}-localstatedir} must be \t{\$\{EPREFIX\}/var/lib}
 \item \t{-{}-docdir} must be \t{\$\{EPREFIX\}/usr/share/doc/\$\{PF\}}, if 
the EAPI is listed in
@@ -340,20 +343,22 @@ commands once the current phase function has returned.
 \ChangeWhenAddingAnEAPI{8}
 \begin{centertable}{Extra \t{econf} arguments for EAPIs}
 \label{tab:econf-options-table}
-\begin{tabular}{ll}
+\begin{tabular}{lll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{P{9em}}{\textbf{-{}-disable-dependency-tracking}} &
   \multicolumn{1}{P{5em}}{\textbf{-{}-disable-silent-rules}} &
+  \multicolumn{1}{c}{\textbf{-{}-datarootdir}} &
   \multicolumn{1}{c}{\textbf{-{}-docdir}} &
   \multicolumn{1}{c}{\textbf{-{}-htmldir}} &
   \multicolumn{1}{c}{\textbf{-{}-with-sysroot}} \\
   \midrule
-  0, 1, 2, 3& No  & No  & No  & No  & No  \\
-  4 & Yes & No  & No  & No  & No  \\
-  5 & Yes & Yes & No  & No  & No  \\
-  6 & Yes & Yes & Yes & Yes & No  \\
-  7, 8  & Yes & Yes & Yes & Yes & Yes \\
+  0, 1, 2, 3& No  & No  & No  & No  & No  & No  \\
+  4 & Yes & No  & No  & No  & No  & No  \\
+  5 & Yes & Yes & No  & No  & No  & No  \\
+  6 & Yes & Yes & No  & Yes & Yes & No  \\
+  7 & Yes & Yes & No  & Yes & Yes & Yes \\
+  8 & Yes & Yes & Yes & Yes & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2021-05-26 Thread Ulrich Müller
commit: 786778355746adaa07699b7b76221679db0c6b20
Author: Michał Górny  gentoo  org>
AuthorDate: Tue Dec 24 21:50:30 2019 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Tue May 25 20:03:56 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=78677835

EAPI 8 removes .7z, .rar, .lha unpack support

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

 eapi-differences.tex | 10 ++
 pkg-mgr-commands.tex | 21 ++---
 2 files changed, 24 insertions(+), 7 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index f0ea62c..7f107e9 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -341,6 +341,15 @@ Controllable stripping & \compactfeatureref{dostrip} &
 \t{unpack} support for \t{txz} & \compactfeatureref{unpack-extensions} &
 No & No & Yes & Yes & Yes \\
 
+\t{unpack} support for \t{7z} & \compactfeatureref{unpack-extensions} &
+Yes & Yes & Yes & Yes & No \\
+
+\t{unpack} support for \t{lha} & \compactfeatureref{unpack-extensions} &
+Yes & Yes & Yes & Yes & No \\
+
+\t{unpack} support for \t{rar} & \compactfeatureref{unpack-extensions} &
+Yes & Yes & Yes & Yes & No \\
+
 \t{unpack} case-insensitive & \compactfeatureref{unpack-ignore-case} &
 No & No & Yes & Yes & Yes \\
 
@@ -533,6 +542,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{insopts} no longer affects \t{doconfd}, \t{doenvd} and \t{doheader}, 
\featureref{insopts}.
 \item \t{exeopts} no longer affects \t{doinitd}, \featureref{exeopts}.
 \item \t{usev} supports an optional second argument, \featureref{usev}.
+\item \t{unpack} no longer supports \t{.7z}, \t{.rar}, \t{.lha}, 
\featureref{unpack-extensions}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index eac17de..848c8da 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -1153,10 +1153,13 @@ has returned.
 \item bzip2-compressed tar files (\t{*.tar.bz2, *.tbz2, *.tar.bz, *.tbz}). 
Ebuilds must ensure
 that bzip2 and GNU tar are installed.
 \item zip files (\t{*.zip, *.ZIP, *.jar}). Ebuilds must ensure that 
Info-ZIP Unzip is installed.
-\item 7zip files (\t{*.7z, *.7Z}). Ebuilds must ensure that P7ZIP is 
installed.
+\item 7zip files (\t{*.7z, *.7Z}). Ebuilds must ensure that P7ZIP is 
installed. Only for EAPIs
+listed in table~\ref{tab:unpack-extensions-table} as supporting 
\t{.7z}.
 \item rar files (\t{*.rar, *.RAR}). Ebuilds must ensure that RARLAB's 
unrar is installed.
+Only for EAPIs listed in table~\ref{tab:unpack-extensions-table} as 
supporting \t{.rar}.
 \item LHA archives (\t{*.LHA, *.LHa, *.lha, *.lzh}). Ebuilds must ensure 
that the lha program is
-installed.
+installed. Only for EAPIs listed in 
table~\ref{tab:unpack-extensions-table} as supporting
+\t{.lha}.
 \item ar archives (\t{*.a}). Ebuilds must ensure that GNU binutils is 
installed.
 \item deb packages (\t{*.deb}). Ebuilds must ensure that the deb2targz 
program is installed on
 those platforms where the GNU binutils ar program is not available and 
the installed ar
@@ -1195,16 +1198,20 @@ has returned.
 \ChangeWhenAddingAnEAPI{8}
 \begin{centertable}{\t{unpack} extensions for EAPIs}
 \label{tab:unpack-extensions-table}
-\begin{tabular}{}
+\begin{tabular}{}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{c}{\textbf{\t{.xz}?}} &
   \multicolumn{1}{c}{\textbf{\t{.tar.xz}?}} &
-  \multicolumn{1}{c}{\textbf{\t{.txz}?}} \\
+  \multicolumn{1}{c}{\textbf{\t{.txz}?}} &
+  \multicolumn{1}{c}{\textbf{\t{.7z}?}} &
+  \multicolumn{1}{c}{\textbf{\t{.rar}?}} &
+  \multicolumn{1}{c}{\textbf{\t{.lha}?}} \\
   \midrule
-  0, 1, 2   & No  & No  & No  \\
-  3, 4, 5   & Yes & Yes & No  \\
-  6, 7, 8   & Yes & Yes & Yes \\
+  0, 1, 2   & No  & No  & No  & Yes & Yes & Yes \\
+  3, 4, 5   & Yes & Yes & No  & Yes & Yes & Yes \\
+  6, 7  & Yes & Yes & Yes & Yes & Yes & Yes \\
+  8 & Yes & Yes & Yes & No  & No  & No  \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2021-05-26 Thread Ulrich Müller
commit: f0fb2d5886ed710a427720fdb4f380a46aa44bc0
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun May 16 18:22:15 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Tue May 25 20:03:56 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=f0fb2d58

EAPI 8 has dosym -r

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

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index d50b593..aa06551 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -293,6 +293,9 @@ Output commands use stdout & 
\compactfeatureref{output-no-stdout} &
 \t{domo} destination path & \compactfeatureref{domo-path} &
 \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{/usr} & 
\t{/usr} \\
 
+\t{dosym -r} & \compactfeatureref{dosym-relative} &
+No & No & No & No & Yes \\
+
 \t{new*} support stdin & \compactfeatureref{newfoo-stdin} &
 No & Yes & Yes & Yes & Yes \\
 
@@ -517,6 +520,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{hasv} and \t{hasq} banned, \featureref{banned-commands}.
 \item \t{econf} adds \t{-{}-datarootdir}, \featureref{econf-options}.
 \item \t{econf} adds \t{-{}-disable-static}, \featureref{econf-options}.
+\item \t{dosym} can create relative paths, \featureref{dosym-relative}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 817b52b..dd286a6 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -599,9 +599,28 @@ the current phase function has returned.
 
 \item[dosbin] As \t{dobin}, but installs to \t{DESTTREE/sbin}.
 
-\item[dosym] Creates a symbolic link named as for its second parameter, 
pointing to the first. If
-the directory containing the new link does not exist, creates it. Failure 
behaviour is EAPI
-dependent as per section~\ref{sec:failure-behaviour}.
+\item[dosym] Creates a symbolic link named as for its second parameter, 
pointing to the first.
+If the directory containing the new link does not exist, creates it.
+
+\featurelabel{dosym-relative} In EAPIs listed in table~\ref{tab:dosym-r} 
as supporting creation
+of relative paths, when called with option \t{-r}, expands the first 
parameter relative to the
+directory part of the second parameter. The algorithm must return a result 
identical to the one
+returned by the function in listing~\ref{lst:dosym-r}, with \t{realpath} 
and \t{dirname} from
+GNU coreutils version~8.32. Specifying option \t{-r} together with a 
relative path as first
+(target) parameter is an error.
+
+Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
+
+\begin{listing}[h]
+\caption{Create a relative path for \t{dosym -r}} \label{lst:dosym-r}
+\begin{verbatim}
+dosym_relative_path() {
+local link=$(realpath -m -s "/${2#/}")
+local linkdir=$(dirname "${link}")
+realpath -m -s --relative-to="${linkdir}" "$1"
+}
+\end{verbatim}
+\end{listing}
 
 \item[fowners] Acts as for \t{chown}, but takes paths relative to the image 
directory. Failure
 behaviour is EAPI dependent as per section~\ref{sec:failure-behaviour}.
@@ -729,6 +748,20 @@ the current phase function has returned.
 \end{tabular}
 \end{centertable}
 
+\ChangeWhenAddingAnEAPI{8}
+\begin{centertable}{EAPIs supporting \t{dosym -r}}
+\label{tab:dosym-r}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{\t{dosym} supports creation of relative 
paths?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7  & No  \\
+  8   & Yes \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \subsection{Commands affecting install destinations}
 The following commands are used to set the various destination trees and 
options used by the above
 installation commands. They must be shell functions or aliases, due to the 
need to set variables



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

2021-05-26 Thread Ulrich Müller
commit: 27c81f8ee90a5bd12b96bf907ff126e2bc16c22e
Author: Ulrich Müller  gentoo  org>
AuthorDate: Mon May 17 15:45:42 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Tue May 25 20:03:56 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=27c81f8e

EAPI 8: econf adds --disable-static

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

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 41f7294..d50b593 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -272,7 +272,8 @@ Output commands use stdout & 
\compactfeatureref{output-no-stdout} &
 disable dependency tracking, disable silent rules &
 disable dependency tracking, disable silent rules, docdir, htmldir &
 disable dependency tracking, disable silent rules, docdir, htmldir, with 
sysroot &
-disable dependency tracking, disable silent rules, datarootdir, docdir, 
htmldir, with sysroot \\
+disable dependency tracking, disable silent rules, disable static,
+datarootdir, docdir, htmldir, with sysroot \\
 
 \t{dodoc -r} & \compactfeatureref{dodoc} &
 * & Yes & Yes & Yes & Yes \\
@@ -515,6 +516,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{useq} banned, \featureref{banned-commands}.
 \item \t{hasv} and \t{hasq} banned, \featureref{banned-commands}.
 \item \t{econf} adds \t{-{}-datarootdir}, \featureref{econf-options}.
+\item \t{econf} adds \t{-{}-disable-static}, \featureref{econf-options}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 7909bdd..e74f730 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -338,27 +338,31 @@ commands once the current phase function has returned.
 \item \t{-{}-disable-silent-rules}, 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-silent-rules}
 occurs in the output of \t{configure -{}-help}.
+\item \t{-{}-disable-static}, if the EAPI is listed in 
table~\ref{tab:econf-options-table}
+as using it. This option will only be passed if the string 
\t{-{}-disable-static} occurs
+in the output of \t{configure -{}-help}.
 \end{itemize}
 
 \ChangeWhenAddingAnEAPI{8}
 \begin{centertable}{Extra \t{econf} arguments for EAPIs}
 \label{tab:econf-options-table}
-\begin{tabular}{lll}
+\begin{tabular}{}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{P{9em}}{\textbf{-{}-disable-dependency-tracking}} &
   \multicolumn{1}{P{5em}}{\textbf{-{}-disable-silent-rules}} &
+  \multicolumn{1}{c}{\textbf{-{}-disable-static}} &
   \multicolumn{1}{c}{\textbf{-{}-datarootdir}} &
   \multicolumn{1}{c}{\textbf{-{}-docdir}} &
   \multicolumn{1}{c}{\textbf{-{}-htmldir}} &
   \multicolumn{1}{c}{\textbf{-{}-with-sysroot}} \\
   \midrule
-  0, 1, 2, 3& No  & No  & No  & No  & No  & No  \\
-  4 & Yes & No  & No  & No  & No  & No  \\
-  5 & Yes & Yes & No  & No  & No  & No  \\
-  6 & Yes & Yes & No  & Yes & Yes & No  \\
-  7 & Yes & Yes & No  & Yes & Yes & Yes \\
-  8 & Yes & Yes & Yes & Yes & Yes & Yes \\
+  0, 1, 2, 3& No  & No  & No  & No  & No  & No  & No  \\
+  4 & Yes & No  & No  & No  & No  & No  & No  \\
+  5 & Yes & Yes & No  & No  & No  & No  & No  \\
+  6 & Yes & Yes & No  & No  & Yes & Yes & No  \\
+  7 & Yes & Yes & No  & No  & Yes & Yes & Yes \\
+  8 & Yes & Yes & Yes & Yes & Yes & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2021-05-26 Thread Ulrich Müller
commit: 4470561e8ae96901a4ed42b95ecc3ca720401615
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun May 16 16:15:04 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Tue May 25 20:03:56 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=4470561e

EAPI 8: insopts and exeopts affect only doins and doexe

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

 eapi-differences.tex |  8 +++
 pkg-mgr-commands.tex | 64 ++--
 2 files changed, 60 insertions(+), 12 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index aa06551..16820dd 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -299,6 +299,12 @@ Output commands use stdout & 
\compactfeatureref{output-no-stdout} &
 \t{new*} support stdin & \compactfeatureref{newfoo-stdin} &
 No & Yes & Yes & Yes & Yes \\
 
+\t{insopts} affects misc.\ commands & \compactfeatureref{insopts} &
+Yes & Yes & Yes & Yes & No \\
+
+\t{exeopts} affects \t{doinitd} & \compactfeatureref{exeopts} &
+Yes & Yes & Yes & Yes & No \\
+
 Controllable compression & \compactfeatureref{docompress} &
 * & Yes & Yes & Yes & Yes \\
 
@@ -521,6 +527,8 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{econf} adds \t{-{}-datarootdir}, \featureref{econf-options}.
 \item \t{econf} adds \t{-{}-disable-static}, \featureref{econf-options}.
 \item \t{dosym} can create relative paths, \featureref{dosym-relative}.
+\item \t{insopts} no longer affects \t{doconfd}, \t{doenvd} and \t{doheader}, 
\featureref{insopts}.
+\item \t{exeopts} no longer affects \t{doinitd}, \featureref{exeopts}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index dd286a6..58254fa 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -460,8 +460,9 @@ the current phase function has returned.
 \t{joe:users}. Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
 
 \item[doconfd] Installs the given config files into \t{/etc/conf.d/}, by 
default with file mode
-\t{0644}, or with the \t{install} options set by the most recent 
\t{insopts} call.
-Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
+\t{0644}. For EAPIs listed in table~\ref{tab:insopts-commands} as 
respecting \t{insopts}
+in \t{doconfd}, the \t{install} options set by the most recent \t{insopts} 
call override
+the default. Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
 
 \item[dodir] Creates the given directories, by default with file mode 
\t{0755}, or with the
 \t{install} options set by the most recent \t{diropts} call. Failure 
behaviour is EAPI
@@ -478,8 +479,9 @@ the current phase function has returned.
 section~\ref{sec:failure-behaviour}.
 
 \item[doenvd] Installs the given environment files into \t{/etc/env.d/}, by 
default with file mode
-\t{0644}, or with the \t{install} options set by the most recent 
\t{insopts} call.
-Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
+\t{0644}. For EAPIs listed in table~\ref{tab:insopts-commands} as 
respecting \t{insopts}
+in \t{doenvd}, the \t{install} options set by the most recent \t{insopts} 
call override
+the default. Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
 
 \item[doexe] Installs the given files into the directory specified by the most 
recent \t{exeinto}
 call. If \t{exeinto} has not yet been called, behaviour is undefined. 
Files are installed by
@@ -494,9 +496,10 @@ the current phase function has returned.
 section~\ref{sec:banned-commands}.
 
 \item[doheader] \featurelabel{doheader} Installs the given header files into 
\t{/usr/include/},
-by default with file mode \t{0644}, or with the \t{install} options set by 
the most recent
-\t{insopts} call. If the first argument is \t{-r}, then operates 
recursively, descending
-into any directories given.
+by default with file mode \t{0644}. For EAPIs listed in 
table~\ref{tab:insopts-commands}
+as respecting \t{insopts} in \t{doheader}, the \t{install} options set by 
the most recent
+\t{insopts} call override the default. If the first argument is \t{-r}, 
then operates
+recursively, descending into any directories given.
 Only available in EAPIs listed in table~\ref{tab:doheader-table} as 
supporting \t{doheader}.
 Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
 
@@ -529,8 +532,9 @@ the current phase function has returned.
 \t{0644}. Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
 
 \item[doinitd] Installs the given initscript files into \t{/etc/init.d}, by 
default with file mode
-\t{0755}, or with the \t{install} options set by the most recent 
\t{exeopts} call.
-Failure behaviour is EAPI 

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

2021-05-26 Thread Ulrich Müller
commit: 18856bf39ae1b4834499708830345c6a4e5313ce
Author: Ulrich Müller  gentoo  org>
AuthorDate: Mon May 17 19:30:41 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Tue May 25 20:03:56 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=18856bf3

Split the econf options table because it has become too wide

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

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

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index e74f730..817b52b 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -346,23 +346,28 @@ commands once the current phase function has returned.
 \ChangeWhenAddingAnEAPI{8}
 \begin{centertable}{Extra \t{econf} arguments for EAPIs}
 \label{tab:econf-options-table}
-\begin{tabular}{}
+\begin{tabular}{l}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{1}{P{9em}}{\textbf{-{}-disable-dependency-tracking}} &
-  \multicolumn{1}{P{5em}}{\textbf{-{}-disable-silent-rules}} &
-  \multicolumn{1}{c}{\textbf{-{}-disable-static}} &
   \multicolumn{1}{c}{\textbf{-{}-datarootdir}} &
   \multicolumn{1}{c}{\textbf{-{}-docdir}} &
   \multicolumn{1}{c}{\textbf{-{}-htmldir}} &
   \multicolumn{1}{c}{\textbf{-{}-with-sysroot}} \\
   \midrule
-  0, 1, 2, 3& No  & No  & No  & No  & No  & No  & No  \\
-  4 & Yes & No  & No  & No  & No  & No  & No  \\
-  5 & Yes & Yes & No  & No  & No  & No  & No  \\
-  6 & Yes & Yes & No  & No  & Yes & Yes & No  \\
-  7 & Yes & Yes & No  & No  & Yes & Yes & Yes \\
-  8 & Yes & Yes & Yes & Yes & Yes & Yes & Yes \\
+  0, 1, 2, 3, 4, 5  & No  & No  & No  & No  \\
+  6 & No  & Yes & Yes & No  \\
+  7 & No  & Yes & Yes & Yes \\
+  8 & Yes & Yes & Yes & Yes \\
+  \midrule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{P{5.5em}}{\textbf{-{}-disable-dependency-tracking}} &
+  \multicolumn{1}{P{5em}}{\textbf{-{}-disable-silent-rules}} &
+  \multicolumn{1}{c}{\textbf{-{}-disable-static}} & \\
+  \midrule
+  0, 1, 2, 3& No  & No  & No  & \\
+  4 & Yes & No  & No  & \\
+  5, 6, 7   & Yes & Yes & No  & \\
+  8 & Yes & Yes & Yes & \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2021-05-26 Thread Ulrich Müller
commit: e9e9a1167def7ca65e2dfc7c1f255701d3c7737f
Author: Michał Górny  gentoo  org>
AuthorDate: Sun Dec 22 20:32:41 2019 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Tue May 25 19:56:56 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=e9e9a116

EAPI 8 has install-time dependencies (IDEPEND)

Bug: https://bugs.gentoo.org/660306
Signed-off-by: Michał Górny  gentoo.org>
[Updated as discussed in -pms mailing list]
Signed-off-by: Ulrich Müller  gentoo.org>

 dependencies.tex | 25 +
 eapi-differences.tex |  4 
 ebuild-env-vars.tex  |  5 +++--
 ebuild-vars.tex  |  1 +
 eclasses.tex | 10 +-
 metadata-cache.tex   |  2 ++
 6 files changed, 32 insertions(+), 15 deletions(-)

diff --git a/dependencies.tex b/dependencies.tex
index 3ef6fa6..f14a08c 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -21,7 +21,7 @@
   \t{src_install} & \t{DEPEND}, \t{BDEPEND} \\
   \addlinespace
   \t{pkg_preinst}, \t{pkg_postinst}, \t{pkg_prerm}, \t{pkg_postrm} &
-  \t{RDEPEND} \\
+  \t{RDEPEND}, \t{IDEPEND} \\
   \addlinespace
   \t{pkg_config} & \t{RDEPEND}, \t{PDEPEND} \\
   \bottomrule
@@ -32,7 +32,7 @@
 \label{tab:dep-class-api}
 \begin{tabular}{}
   \toprule
-& \t{BDEPEND} & \t{DEPEND} & 
\t{RDEPEND}, \t{PDEPEND} \\
+   & \t{BDEPEND}, \t{IDEPEND} & \t{DEPEND} & 
\t{RDEPEND}, \t{PDEPEND} \\
   \midrule
   Binary compatible with& \t{CBUILD}  & \t{CHOST}  & 
\t{CHOST} \\
   Base unprefixed path  & \t{/}   & \t{\$\{SYSROOT\}}  & 
\t{\$\{ROOT\}}\\
@@ -82,16 +82,24 @@ as supporting \t{BDEPEND}, the build dependencies are split 
into two subclasses:
 dependency.
 \end{compactitem}
 
+\featurelabel{idepend} Additionally, in EAPIs listed in 
table~\ref{tab:depend-table} as supporting
+\t{IDEPEND}, install-time dependencies can be specified. These dependencies 
are binary compatible
+with the native build system (\t{CBUILD}). Ebuilds are allowed to call them in 
\t{pkg_preinst} and
+\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}
 \begin{centertable}{EAPIs supporting additional dependency types}
 \label{tab:depend-table}
-\begin{tabular}{ll}
+\begin{tabular}{lll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{1}{c}{\textbf{Supports \t{BDEPEND}?}} \\
+  \multicolumn{1}{c}{\textbf{Supports \t{BDEPEND}?}} &
+  \multicolumn{1}{c}{\textbf{Supports \t{IDEPEND}?}} \\
   \midrule
-  0, 1, 2, 3, 4, 5, 6 & No  \\
-  7, 8& Yes \\
+  0, 1, 2, 3, 4, 5, 6 & No  & No  \\
+  7   & Yes & No  \\
+  8   & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -111,7 +119,7 @@ be surrounded on both sides by whitespace, except at the 
start and end of the st
 
 \begin{compactitem}
 \item A package dependency specification. Permitted in \t{DEPEND}, 
\t{BDEPEND}, \t{RDEPEND},
-\t{PDEPEND}.
+\t{PDEPEND}, \t{IDEPEND}.
 \item A URI, in the form \t{proto://host/path}. Permitted in \t{HOMEPAGE} and 
\t{SRC_URI}\@.
 In EAPIs listed in table~\ref{tab:uri-arrows-table} as supporting 
\t{SRC_URI} arrows, may
 optionally be followed by whitespace, then \t{->}, then whitespace, then a 
simple filename when
@@ -129,7 +137,8 @@ be surrounded on both sides by whitespace, except at the 
start and end of the st
 followed by an open parenthesis, followed by whitespace, followed by one 
or more
 of (a dependency item of any kind followed by whitespace), followed by a 
close parenthesis.
 More formally: \t{any-of} \t{::=} \t{'||' whitespace '(' whitespace (item 
whitespace)+ ')'}.
-Permitted in \t{DEPEND}, \t{BDEPEND}, \t{RDEPEND}, \t{PDEPEND}, 
\t{LICENSE}, \t{REQUIRED_USE}.
+Permitted in \t{DEPEND}, \t{BDEPEND}, \t{RDEPEND}, \t{PDEPEND}, 
\t{IDEPEND}, \t{LICENSE},
+\t{REQUIRED_USE}.
 \item An exactly-one-of group, which has the same format as the any-of group, 
but begins with the
 string \t{\textasciicircum\textasciicircum} instead. Permitted in 
\t{REQUIRED_USE}.
 \item \featurelabel{at-most-one-of} An at-most-one-of group, which has the 
same format as the

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 22f99e2..f3af563 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -86,6 +86,9 @@ Selective URI restrictions & \compactfeatureref{uri-restrict} 
&
 \t{BDEPEND} & \compactfeatureref{bdepend} &
 No & No & No & Yes & Yes \\
 
+\t{IDEPEND} & \compactfeatureref{idepend} &
+No & No & No & No & Yes \\
+
 \t{??\ ( )} groups & \compactfeatureref{at-most-one-of} &
 No & Yes & Yes & Yes & Yes \\
 
@@ -490,6 +493,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item Less 

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

2021-05-26 Thread Ulrich Müller
commit: 8f6eacff576fbd5fb1e09025dd1a301b221a4c0c
Author: Michał Górny  gentoo  org>
AuthorDate: Sun Dec 22 18:23:57 2019 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Tue May 25 19:56:56 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=8f6eacff

EAPI 8 has selective URI restrictions

Bug: https://bugs.gentoo.org/371413
Signed-off-by: Michał Górny  gentoo.org>
[Shortened "selective-uri-restrict" label to make it fit in the margin]
Signed-off-by: Ulrich Müller  gentoo.org>

 eapi-differences.tex |  4 
 ebuild-vars.tex  | 18 +-
 2 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index a334881..22f99e2 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -74,6 +74,9 @@ Bash version & \compactfeatureref{bash-version} &
 \t{SRC_URI} arrows & \compactfeatureref{src-uri-arrows} &
 * & Yes & Yes & Yes & Yes \\
 
+Selective URI restrictions & \compactfeatureref{uri-restrict} &
+No & No & No & No & Yes \\
+
 \t{RDEPEND=DEPEND} & \compactfeatureref{rdepend-depend} &
 * & No & No & No & No \\
 
@@ -486,6 +489,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \begin{compactitem}
 \item Less strict naming rules for files in \t{updates} directory, 
\featureref{updates-filenames}.
 \item Bash version is 5.0, \featureref{bash-version}.
+\item Selective fetch/mirror restriction, \featureref{uri-restrict}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index 040b02a..f6b1c26 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -169,16 +169,24 @@ on the right of the arrow. When consulting mirrors 
(except for those explicitly
 of the arrow, if \t{mirror://} is used), the filename to the right of the 
arrow shall be requested
 instead of the filename in the URI.
 
+\featurelabel{uri-restrict} In EAPIs listed in 
table~\ref{tab:uri-arrows-table} as supporting
+selective URI restrictions, the URI protocol can be prefixed by an additional 
\t{fetch+} or
+\t{mirror+} term. If the ebuild is fetch restricted, the \t{fetch+} prefix 
undoes the fetch
+restriction for the URI (but not the implied mirror restriction). If the 
ebuild is fetch or mirror
+restricted, the \t{mirror+} prefix undoes both fetch and mirror restrictions 
for the URI.
+
 \ChangeWhenAddingAnEAPI{8}
-\begin{centertable}{EAPIs supporting \t{SRC_URI} arrows}
+\begin{centertable}{EAPIs supporting \t{SRC_URI} arrows and selective URI 
restrictions}
 \label{tab:uri-arrows-table}
-\begin{tabular}{ll}
+\begin{tabular}{lll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{1}{c}{\textbf{Supports \t{SRC_URI} arrows?}} \\
+  \multicolumn{1}{c}{\textbf{Supports \t{SRC_URI} arrows?}} &
+  \multicolumn{1}{c}{\textbf{Supports selective URI restrictions?}} \\
   \midrule
-  0, 1& No  \\
-  2, 3, 4, 5, 6, 7, 8 & Yes \\
+  0, 1  & No  & No  \\
+  2, 3, 4, 5, 6, 7  & Yes & No  \\
+  8 & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2021-05-24 Thread Ulrich Müller
commit: 0758b3343f9c3b25deb8fe099d3cbd53eb0f2ce8
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun Nov  5 18:04:28 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon May 24 19:19:39 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=0758b334

EAPI 8: Bash version is 5.0

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

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index b89ede0..a334881 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -57,7 +57,7 @@ Stable use masking/forcing & \compactfeatureref{stablemask} &
 No & Yes & Yes & Yes & Yes \\
 
 Bash version & \compactfeatureref{bash-version} &
-3.2 & 3.2 & 4.2 & 4.2 & 4.2 \\
+3.2 & 3.2 & 4.2 & 4.2 & 5.0 \\
 
 \t{failglob} in global scope & \compactfeatureref{failglob} &
 No & No & Yes & Yes & Yes \\
@@ -485,6 +485,7 @@ EAPI 8 is EAPI 7 with the following changes:
 
 \begin{compactitem}
 \item Less strict naming rules for files in \t{updates} directory, 
\featureref{updates-filenames}.
+\item Bash version is 5.0, \featureref{bash-version}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/ebuild-format.tex b/ebuild-format.tex
index c2224bf..4929ba4 100644
--- a/ebuild-format.tex
+++ b/ebuild-format.tex
@@ -26,7 +26,8 @@ output or standard error, or modify the state of the system 
in any way.
   \multicolumn{1}{c}{\textbf{\t{failglob} in global scope?}} \\
   \midrule
   0, 1, 2, 3, 4, 5  & 3.2 & No  \\
-  6, 7, 8   & 4.2 & Yes \\
+  6, 7  & 4.2 & Yes \\
+  8 & 5.0 & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2021-05-24 Thread Ulrich Müller
commit: 5c919daa62bb2621101683f9affbcb32fff3d5f7
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun May 16 16:15:04 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon May 24 19:19:39 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=5c919daa

EAPI 8: insopts and exeopts affect only doins and doexe

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

 eapi-differences.tex |  8 +++
 pkg-mgr-commands.tex | 64 ++--
 2 files changed, 60 insertions(+), 12 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index aa06551..16820dd 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -299,6 +299,12 @@ Output commands use stdout & 
\compactfeatureref{output-no-stdout} &
 \t{new*} support stdin & \compactfeatureref{newfoo-stdin} &
 No & Yes & Yes & Yes & Yes \\
 
+\t{insopts} affects misc.\ commands & \compactfeatureref{insopts} &
+Yes & Yes & Yes & Yes & No \\
+
+\t{exeopts} affects \t{doinitd} & \compactfeatureref{exeopts} &
+Yes & Yes & Yes & Yes & No \\
+
 Controllable compression & \compactfeatureref{docompress} &
 * & Yes & Yes & Yes & Yes \\
 
@@ -521,6 +527,8 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{econf} adds \t{-{}-datarootdir}, \featureref{econf-options}.
 \item \t{econf} adds \t{-{}-disable-static}, \featureref{econf-options}.
 \item \t{dosym} can create relative paths, \featureref{dosym-relative}.
+\item \t{insopts} no longer affects \t{doconfd}, \t{doenvd} and \t{doheader}, 
\featureref{insopts}.
+\item \t{exeopts} no longer affects \t{doinitd}, \featureref{exeopts}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index dd286a6..58254fa 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -460,8 +460,9 @@ the current phase function has returned.
 \t{joe:users}. Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
 
 \item[doconfd] Installs the given config files into \t{/etc/conf.d/}, by 
default with file mode
-\t{0644}, or with the \t{install} options set by the most recent 
\t{insopts} call.
-Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
+\t{0644}. For EAPIs listed in table~\ref{tab:insopts-commands} as 
respecting \t{insopts}
+in \t{doconfd}, the \t{install} options set by the most recent \t{insopts} 
call override
+the default. Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
 
 \item[dodir] Creates the given directories, by default with file mode 
\t{0755}, or with the
 \t{install} options set by the most recent \t{diropts} call. Failure 
behaviour is EAPI
@@ -478,8 +479,9 @@ the current phase function has returned.
 section~\ref{sec:failure-behaviour}.
 
 \item[doenvd] Installs the given environment files into \t{/etc/env.d/}, by 
default with file mode
-\t{0644}, or with the \t{install} options set by the most recent 
\t{insopts} call.
-Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
+\t{0644}. For EAPIs listed in table~\ref{tab:insopts-commands} as 
respecting \t{insopts}
+in \t{doenvd}, the \t{install} options set by the most recent \t{insopts} 
call override
+the default. Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
 
 \item[doexe] Installs the given files into the directory specified by the most 
recent \t{exeinto}
 call. If \t{exeinto} has not yet been called, behaviour is undefined. 
Files are installed by
@@ -494,9 +496,10 @@ the current phase function has returned.
 section~\ref{sec:banned-commands}.
 
 \item[doheader] \featurelabel{doheader} Installs the given header files into 
\t{/usr/include/},
-by default with file mode \t{0644}, or with the \t{install} options set by 
the most recent
-\t{insopts} call. If the first argument is \t{-r}, then operates 
recursively, descending
-into any directories given.
+by default with file mode \t{0644}. For EAPIs listed in 
table~\ref{tab:insopts-commands}
+as respecting \t{insopts} in \t{doheader}, the \t{install} options set by 
the most recent
+\t{insopts} call override the default. If the first argument is \t{-r}, 
then operates
+recursively, descending into any directories given.
 Only available in EAPIs listed in table~\ref{tab:doheader-table} as 
supporting \t{doheader}.
 Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
 
@@ -529,8 +532,9 @@ the current phase function has returned.
 \t{0644}. Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
 
 \item[doinitd] Installs the given initscript files into \t{/etc/init.d}, by 
default with file mode
-\t{0755}, or with the \t{install} options set by the most recent 
\t{exeopts} call.
-Failure behaviour is EAPI 

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

2021-05-24 Thread Ulrich Müller
commit: 30e3995b6bf6a7ef8b69ceb8242409046e5e12c2
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun May 23 14:37:05 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon May 24 19:19:39 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=30e3995b

Rearrange listings of phase functions

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

 eapi-differences.tex |  10 ++--
 ebuild-functions.tex | 164 ---
 2 files changed, 82 insertions(+), 92 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 08c4e9f..842e09f 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -349,7 +349,7 @@ EAPI 1 is EAPI 0 with the following changes:
 \begin{compactitem}
 \item \t{IUSE} defaults, \featureref{iuse-defaults}.
 \item Slot dependencies, \featureref{slot-deps}.
-\item Different \t{src_compile} implementation, \featureref{src-compile-1}.
+\item Different \t{src_compile} implementation, \featureref{src-compile}.
 \end{compactitem}
 
 \section{EAPI 2}
@@ -362,7 +362,7 @@ EAPI 2 is EAPI 1 with the following changes:
 \item \t{!}\ and \t{!!}\ blockers, \featureref{bang-strength}.
 \item \t{src_prepare}, \featureref{src-prepare}.
 \item \t{src_configure}, \featureref{src-configure}.
-\item Different \t{src_compile} implementation, \featureref{src-compile-2}.
+\item Different \t{src_compile} implementation, \featureref{src-compile}.
 \item \t{default_} phase functions for phases \t{pkg_nofetch}, \t{src_unpack}, 
\t{src_prepare},
 \t{src_configure}, \t{src_compile} and \t{src_test}; 
\featureref{default-phase-funcs}.
 \item \t{doman} language detection by filename, \featureref{doman-langs}.
@@ -391,7 +391,7 @@ EAPI 4 is EAPI 3 with the following changes:
 \item Use dependency defaults, \featureref{use-dep-defaults}.
 \item \t{S} to \t{WORKDIR} fallback restricted, 
\featureref{s-workdir-fallback}.
 \item \t{pkg_pretend}, \featureref{pkg-pretend}.
-\item Default \t{src_install} no longer a no-op, \featureref{src-install-4}.
+\item Default \t{src_install} no longer a no-op, \featureref{src-install}.
 \item \t{pkg_info} can run on non-installed packages, \featureref{pkg-info}.
 \item \t{AA} is gone, \featureref{aa}.
 \item \t{KV} is gone, \featureref{kv}.
@@ -436,8 +436,8 @@ EAPI 6 is EAPI 5 with the following changes:
 \begin{compactitem}
 \item Bash version is 4.2, \featureref{bash-version}.
 \item \t{failglob} is enabled in global scope, \featureref{failglob}.
-\item Default \t{src_prepare} no longer a no-op, \featureref{src-prepare-6}.
-\item Different \t{src_install} implementation, \featureref{src-install-6}.
+\item Default \t{src_prepare} no longer a no-op, \featureref{src-prepare}.
+\item Different \t{src_install} implementation, \featureref{src-install}.
 \item \t{LC_CTYPE} and \t{LC_COLLATE} compatible with POSIX locale, 
\featureref{locale-settings}.
 \item \t{einstall} banned, \featureref{banned-commands}.
 \item \t{die} and \t{assert} called with \t{-n} respect \t{nonfatal}, 
\featureref{nonfatal-die}.

diff --git a/ebuild-functions.tex b/ebuild-functions.tex
index 00fd259..b224e0b 100644
--- a/ebuild-functions.tex
+++ b/ebuild-functions.tex
@@ -120,10 +120,10 @@ The \t{src_unpack} function extracts all of the package's 
sources. In EAPIs lack
 \t{src_prepare}, it may also apply patches and set up the package's build 
system for further use.
 
 The initial working directory must be \t{WORKDIR}, and the default 
implementation used when
-the ebuild lacks the \t{src_unpack} function shall behave as:
+the ebuild lacks the \t{src_unpack} function shall behave as in 
listing~\ref{lst:src-unpack-0}.
 
 \begin{listing}[H]
-\caption{\t{src_unpack}}
+\caption{\t{src_unpack}} \label{lst:src-unpack-0}
 \begin{verbatim}
 src_unpack() {
 if [[ -n ${A} ]]; then
@@ -142,23 +142,9 @@ post-unpack source preparation.
 The initial working directory is \t{S}, with an error or fallback to 
\t{WORKDIR} as discussed in
 section~\ref{sec:s-to-workdir-fallback}.
 
-\featurelabel{src-prepare-6} For EAPIs listed in 
table~\ref{tab:src-prepare-table} as using format
-6, the default implementation used when the ebuild lacks the \t{src_prepare} 
function shall behave
-as:
-
-\begin{listing}[H]
-\caption{\t{src_prepare}, format~6}
-\begin{verbatim}
-src_prepare() {
-if [[ $(declare -p PATCHES 2>/dev/null) == "declare -a"* ]]; then
-[[ -n ${PATCHES[@]} ]] && eapply "${PATCHES[@]}"
-else
-[[ -n ${PATCHES} ]] && eapply ${PATCHES}
-fi
-eapply_user
-}
-\end{verbatim}
-\end{listing}
+For EAPIs listed in table~\ref{tab:src-prepare-table} as using format~6, the 
default
+implementation used when the ebuild lacks the \t{src_prepare} function shall 
behave as in
+listing~\ref{lst:src-prepare-6}.
 
 For other EAPIs supporting \t{src_prepare}, the default implementation used 
when the ebuild lacks
 the \t{src_prepare} function is a no-op.
@@ -179,6 +165,20 @@ the \t{src_prepare} function is a no-op.
 

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

2021-05-24 Thread Ulrich Müller
commit: 0ee176427425bc43b0dc33de9fb663b78bef8a42
Author: Michał Górny  gentoo  org>
AuthorDate: Sun Dec 22 20:32:41 2019 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon May 24 19:19:39 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=0ee17642

EAPI 8 has install-time dependencies (IDEPEND)

Bug: https://bugs.gentoo.org/660306
Signed-off-by: Michał Górny  gentoo.org>
[Updated as discussed in -pms mailing list]
Signed-off-by: Ulrich Müller  gentoo.org>

 dependencies.tex | 25 +
 eapi-differences.tex |  4 
 ebuild-env-vars.tex  |  5 +++--
 ebuild-vars.tex  |  1 +
 eclasses.tex | 10 +-
 metadata-cache.tex   |  2 ++
 6 files changed, 32 insertions(+), 15 deletions(-)

diff --git a/dependencies.tex b/dependencies.tex
index 3ef6fa6..f14a08c 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -21,7 +21,7 @@
   \t{src_install} & \t{DEPEND}, \t{BDEPEND} \\
   \addlinespace
   \t{pkg_preinst}, \t{pkg_postinst}, \t{pkg_prerm}, \t{pkg_postrm} &
-  \t{RDEPEND} \\
+  \t{RDEPEND}, \t{IDEPEND} \\
   \addlinespace
   \t{pkg_config} & \t{RDEPEND}, \t{PDEPEND} \\
   \bottomrule
@@ -32,7 +32,7 @@
 \label{tab:dep-class-api}
 \begin{tabular}{}
   \toprule
-& \t{BDEPEND} & \t{DEPEND} & 
\t{RDEPEND}, \t{PDEPEND} \\
+   & \t{BDEPEND}, \t{IDEPEND} & \t{DEPEND} & 
\t{RDEPEND}, \t{PDEPEND} \\
   \midrule
   Binary compatible with& \t{CBUILD}  & \t{CHOST}  & 
\t{CHOST} \\
   Base unprefixed path  & \t{/}   & \t{\$\{SYSROOT\}}  & 
\t{\$\{ROOT\}}\\
@@ -82,16 +82,24 @@ as supporting \t{BDEPEND}, the build dependencies are split 
into two subclasses:
 dependency.
 \end{compactitem}
 
+\featurelabel{idepend} Additionally, in EAPIs listed in 
table~\ref{tab:depend-table} as supporting
+\t{IDEPEND}, install-time dependencies can be specified. These dependencies 
are binary compatible
+with the native build system (\t{CBUILD}). Ebuilds are allowed to call them in 
\t{pkg_preinst} and
+\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}
 \begin{centertable}{EAPIs supporting additional dependency types}
 \label{tab:depend-table}
-\begin{tabular}{ll}
+\begin{tabular}{lll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{1}{c}{\textbf{Supports \t{BDEPEND}?}} \\
+  \multicolumn{1}{c}{\textbf{Supports \t{BDEPEND}?}} &
+  \multicolumn{1}{c}{\textbf{Supports \t{IDEPEND}?}} \\
   \midrule
-  0, 1, 2, 3, 4, 5, 6 & No  \\
-  7, 8& Yes \\
+  0, 1, 2, 3, 4, 5, 6 & No  & No  \\
+  7   & Yes & No  \\
+  8   & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -111,7 +119,7 @@ be surrounded on both sides by whitespace, except at the 
start and end of the st
 
 \begin{compactitem}
 \item A package dependency specification. Permitted in \t{DEPEND}, 
\t{BDEPEND}, \t{RDEPEND},
-\t{PDEPEND}.
+\t{PDEPEND}, \t{IDEPEND}.
 \item A URI, in the form \t{proto://host/path}. Permitted in \t{HOMEPAGE} and 
\t{SRC_URI}\@.
 In EAPIs listed in table~\ref{tab:uri-arrows-table} as supporting 
\t{SRC_URI} arrows, may
 optionally be followed by whitespace, then \t{->}, then whitespace, then a 
simple filename when
@@ -129,7 +137,8 @@ be surrounded on both sides by whitespace, except at the 
start and end of the st
 followed by an open parenthesis, followed by whitespace, followed by one 
or more
 of (a dependency item of any kind followed by whitespace), followed by a 
close parenthesis.
 More formally: \t{any-of} \t{::=} \t{'||' whitespace '(' whitespace (item 
whitespace)+ ')'}.
-Permitted in \t{DEPEND}, \t{BDEPEND}, \t{RDEPEND}, \t{PDEPEND}, 
\t{LICENSE}, \t{REQUIRED_USE}.
+Permitted in \t{DEPEND}, \t{BDEPEND}, \t{RDEPEND}, \t{PDEPEND}, 
\t{IDEPEND}, \t{LICENSE},
+\t{REQUIRED_USE}.
 \item An exactly-one-of group, which has the same format as the any-of group, 
but begins with the
 string \t{\textasciicircum\textasciicircum} instead. Permitted in 
\t{REQUIRED_USE}.
 \item \featurelabel{at-most-one-of} An at-most-one-of group, which has the 
same format as the

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 22f99e2..f3af563 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -86,6 +86,9 @@ Selective URI restrictions & \compactfeatureref{uri-restrict} 
&
 \t{BDEPEND} & \compactfeatureref{bdepend} &
 No & No & No & Yes & Yes \\
 
+\t{IDEPEND} & \compactfeatureref{idepend} &
+No & No & No & No & Yes \\
+
 \t{??\ ( )} groups & \compactfeatureref{at-most-one-of} &
 No & Yes & Yes & Yes & Yes \\
 
@@ -490,6 +493,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item Less 

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

2021-05-24 Thread Ulrich Müller
commit: 360a4c1b05750b204421fe5eb1c4355acec4b220
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun May 16 12:05:17 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon May 24 19:19:39 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=360a4c1b

EAPI 8: useq, hasv and hasq are banned

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

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 4cd6b8b..8b1f7a6 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -236,6 +236,15 @@ Most utilities die & \compactfeatureref{die-on-failure} &
 \t{libopts} & \compactfeatureref{banned-commands} &
 Yes & Yes & Yes & Banned & Banned \\
 
+\t{useq} & \compactfeatureref{banned-commands} &
+Yes & Yes & Yes & Yes & Banned \\
+
+\t{hasv} & \compactfeatureref{banned-commands} &
+Yes & Yes & Yes & Yes & Banned \\
+
+\t{hasq} & \compactfeatureref{banned-commands} &
+Yes & Yes & Yes & Yes & Banned \\
+
 Query command options & \compactfeatureref{pm-query-options} &
 None & \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} &
 \t{-b}, \t{-d}, \t{-r} \\
@@ -503,6 +512,8 @@ EAPI 8 is EAPI 7 with the following changes:
 \item Empty working directory in \t{pkg_*} phase functions, 
\featureref{phase-function-dir}.
 \item Different \t{src_prepare} implementation, \featureref{src-prepare}.
 \item \t{PROPERTIES}, \t{RESTRICT} accumulated across eclasses, 
\featureref{accumulate-vars}.
+\item \t{useq} banned, \featureref{banned-commands}.
+\item \t{hasv} and \t{hasq} banned, \featureref{banned-commands}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 71d1e89..c56e592 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -73,6 +73,16 @@ called, the package manager must abort the build process 
indicating an error.
   4, 5  & Yes & Yes & No  & No  & No  & No  \\
   6 & Yes & Yes & Yes & No  & No  & No  \\
   7, 8  & Yes & Yes & Yes & Yes & Yes & Yes \\
+  \midrule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{6}{c}{\textbf{Command banned?}} \\
+  \multicolumn{1}{c}{} &
+  \multicolumn{1}{c}{\textbf{\t{useq}}} &
+  \multicolumn{1}{c}{\textbf{\t{hasv}}} &
+  \multicolumn{1}{c}{\textbf{\t{hasq}}} & & & \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7  & No  & No  & No  & & & \\
+  8   & Yes & Yes & Yes & & & \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -842,6 +852,8 @@ table~\ref{tab:use-list-strictness}.
 \item[usev] The same as \t{use}, but also prints the flag name if the condition
 is met.
 \item[useq] Deprecated synonym for \t{use}.
+In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as per
+section~\ref{sec:banned-commands}.
 \item[use_with] \featurelabel{use-with} Has one-, two-, and three-argument 
forms. The first
 argument is a USE flag name, the second a \t{configure} option name 
(\t{\$\{opt\}}), defaulting
 to the same as the first argument if not provided, and the third is a 
string value
@@ -916,7 +928,11 @@ These functions check whitespace-separated lists for a 
particular value.
 \item[has] Returns shell true (0) if the first argument (a word) is found in 
the list of subsequent
 arguments, false otherwise. Guaranteed quiet.
 \item[hasv] The same as \t{has}, but also prints the first argument if found.
+In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as per
+section~\ref{sec:banned-commands}.
 \item[hasq] Deprecated synonym for \t{has}.
+In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as per
+section~\ref{sec:banned-commands}.
 \end{description}
 
 \subsection{Version manipulation and comparison commands}



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

2021-05-24 Thread Ulrich Müller
commit: b88b9f57d27d25841590f3e8e77d034581886679
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun May 16 18:22:15 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon May 24 19:19:39 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=b88b9f57

EAPI 8 has dosym -r

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

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index d50b593..aa06551 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -293,6 +293,9 @@ Output commands use stdout & 
\compactfeatureref{output-no-stdout} &
 \t{domo} destination path & \compactfeatureref{domo-path} &
 \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{/usr} & 
\t{/usr} \\
 
+\t{dosym -r} & \compactfeatureref{dosym-relative} &
+No & No & No & No & Yes \\
+
 \t{new*} support stdin & \compactfeatureref{newfoo-stdin} &
 No & Yes & Yes & Yes & Yes \\
 
@@ -517,6 +520,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{hasv} and \t{hasq} banned, \featureref{banned-commands}.
 \item \t{econf} adds \t{-{}-datarootdir}, \featureref{econf-options}.
 \item \t{econf} adds \t{-{}-disable-static}, \featureref{econf-options}.
+\item \t{dosym} can create relative paths, \featureref{dosym-relative}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 817b52b..dd286a6 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -599,9 +599,28 @@ the current phase function has returned.
 
 \item[dosbin] As \t{dobin}, but installs to \t{DESTTREE/sbin}.
 
-\item[dosym] Creates a symbolic link named as for its second parameter, 
pointing to the first. If
-the directory containing the new link does not exist, creates it. Failure 
behaviour is EAPI
-dependent as per section~\ref{sec:failure-behaviour}.
+\item[dosym] Creates a symbolic link named as for its second parameter, 
pointing to the first.
+If the directory containing the new link does not exist, creates it.
+
+\featurelabel{dosym-relative} In EAPIs listed in table~\ref{tab:dosym-r} 
as supporting creation
+of relative paths, when called with option \t{-r}, expands the first 
parameter relative to the
+directory part of the second parameter. The algorithm must return a result 
identical to the one
+returned by the function in listing~\ref{lst:dosym-r}, with \t{realpath} 
and \t{dirname} from
+GNU coreutils version~8.32. Specifying option \t{-r} together with a 
relative path as first
+(target) parameter is an error.
+
+Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
+
+\begin{listing}[h]
+\caption{Create a relative path for \t{dosym -r}} \label{lst:dosym-r}
+\begin{verbatim}
+dosym_relative_path() {
+local link=$(realpath -m -s "/${2#/}")
+local linkdir=$(dirname "${link}")
+realpath -m -s --relative-to="${linkdir}" "$1"
+}
+\end{verbatim}
+\end{listing}
 
 \item[fowners] Acts as for \t{chown}, but takes paths relative to the image 
directory. Failure
 behaviour is EAPI dependent as per section~\ref{sec:failure-behaviour}.
@@ -729,6 +748,20 @@ the current phase function has returned.
 \end{tabular}
 \end{centertable}
 
+\ChangeWhenAddingAnEAPI{8}
+\begin{centertable}{EAPIs supporting \t{dosym -r}}
+\label{tab:dosym-r}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{\t{dosym} supports creation of relative 
paths?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7  & No  \\
+  8   & Yes \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \subsection{Commands affecting install destinations}
 The following commands are used to set the various destination trees and 
options used by the above
 installation commands. They must be shell functions or aliases, due to the 
need to set variables



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

2021-05-24 Thread Ulrich Müller
commit: 8cb79731cf936aee82fb75b7c01f08e48eacac72
Author: Ulrich Müller  gentoo  org>
AuthorDate: Thu May 10 17:08:50 2018 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon May 24 19:19:39 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=8cb79731

Add an EAPI 8 identical to EAPI 7

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

 commands.tex  |   4 +-
 dependencies.tex  |  26 +++
 eapi-differences.tex  | 201 +++---
 eapis.tex |   3 +-
 ebuild-env-vars.tex   |  24 +++---
 ebuild-format.tex |   4 +-
 ebuild-functions.tex  |  42 +--
 ebuild-vars.tex   |  24 +++---
 merge.tex |   4 +-
 pkg-mgr-commands.tex  |  84 ++---
 pms.tex   |   4 +-
 profile-variables.tex |   8 +-
 profiles.tex  |  12 +--
 tree-layout.tex   |   4 +-
 14 files changed, 230 insertions(+), 214 deletions(-)

diff --git a/commands.tex b/commands.tex
index 799a20c..d0ad87d 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{7}
+\ChangeWhenAddingAnEAPI{8}
 \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 & Yes   & 2.7 \\
+  7, 8  & Yes   & 2.7 \\
   \bottomrule
 \end{tabular}
 \end{centertable}

diff --git a/dependencies.tex b/dependencies.tex
index 67855f5..3ef6fa6 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -82,7 +82,7 @@ as supporting \t{BDEPEND}, the build dependencies are split 
into two subclasses:
 dependency.
 \end{compactitem}
 
-\ChangeWhenAddingAnEAPI{7}
+\ChangeWhenAddingAnEAPI{8}
 \begin{centertable}{EAPIs supporting additional dependency types}
 \label{tab:depend-table}
 \begin{tabular}{ll}
@@ -91,7 +91,7 @@ as supporting \t{BDEPEND}, the build dependencies are split 
into two subclasses:
   \multicolumn{1}{c}{\textbf{Supports \t{BDEPEND}?}} \\
   \midrule
   0, 1, 2, 3, 4, 5, 6 & No  \\
-  7   & Yes \\
+  7, 8& Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -146,7 +146,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{7}
+\ChangeWhenAddingAnEAPI{8}
 \begin{centertable}{EAPIs supporting \t{REQUIRED_USE ??}\ groups}
 \label{tab:at-most-one-of-table}
 \begin{tabular}{ll}
@@ -155,7 +155,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   & Yes \\
+  5, 6, 7, 8& Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -195,7 +195,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{7}
+\ChangeWhenAddingAnEAPI{8}
 \begin{centertable}{Matching of empty dependency groups in EAPIs}
 \label{tab:empty-dep-groups}
 \begin{tabular}{ll}
@@ -205,7 +205,7 @@ being matched.
 are matched?}} \\
   \midrule
   0, 1, 2, 3, 4, 5, 6 & Yes \\
-  7   & No  \\
+  7, 8& No  \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -241,7 +241,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{7}
+\ChangeWhenAddingAnEAPI{8}
 \begin{centertable}{Support for \t{SLOT} dependencies and sub-slots in EAPIs}
 \label{tab:slot-deps-table}
 \begin{tabular}{lll}
@@ -252,12 +252,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   & Named and operator & Yes \\
+  5, 6, 7, 8& Named and operator & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{7}
+\ChangeWhenAddingAnEAPI{8}
 \begin{centertable}{EAPIs supporting \t{USE} dependencies}
 \label{tab:use-deps-table}
 \begin{tabular}{ll}
@@ -267,7 +267,7 @@ manager must warn or error if this feature is used with an 
EAPI not supporting u
   \midrule
   0, 1  & No  \\
   2, 3

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

2021-05-24 Thread Ulrich Müller
commit: 3c087a736bb77f17aefa0b591b86ac546a7ff5c4
Author: Ulrich Müller  gentoo  org>
AuthorDate: Mon May 17 15:45:42 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon May 24 19:19:39 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=3c087a73

EAPI 8: econf adds --disable-static

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

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 41f7294..d50b593 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -272,7 +272,8 @@ Output commands use stdout & 
\compactfeatureref{output-no-stdout} &
 disable dependency tracking, disable silent rules &
 disable dependency tracking, disable silent rules, docdir, htmldir &
 disable dependency tracking, disable silent rules, docdir, htmldir, with 
sysroot &
-disable dependency tracking, disable silent rules, datarootdir, docdir, 
htmldir, with sysroot \\
+disable dependency tracking, disable silent rules, disable static,
+datarootdir, docdir, htmldir, with sysroot \\
 
 \t{dodoc -r} & \compactfeatureref{dodoc} &
 * & Yes & Yes & Yes & Yes \\
@@ -515,6 +516,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{useq} banned, \featureref{banned-commands}.
 \item \t{hasv} and \t{hasq} banned, \featureref{banned-commands}.
 \item \t{econf} adds \t{-{}-datarootdir}, \featureref{econf-options}.
+\item \t{econf} adds \t{-{}-disable-static}, \featureref{econf-options}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 7909bdd..e74f730 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -338,27 +338,31 @@ commands once the current phase function has returned.
 \item \t{-{}-disable-silent-rules}, 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-silent-rules}
 occurs in the output of \t{configure -{}-help}.
+\item \t{-{}-disable-static}, if the EAPI is listed in 
table~\ref{tab:econf-options-table}
+as using it. This option will only be passed if the string 
\t{-{}-disable-static} occurs
+in the output of \t{configure -{}-help}.
 \end{itemize}
 
 \ChangeWhenAddingAnEAPI{8}
 \begin{centertable}{Extra \t{econf} arguments for EAPIs}
 \label{tab:econf-options-table}
-\begin{tabular}{lll}
+\begin{tabular}{}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{P{9em}}{\textbf{-{}-disable-dependency-tracking}} &
   \multicolumn{1}{P{5em}}{\textbf{-{}-disable-silent-rules}} &
+  \multicolumn{1}{c}{\textbf{-{}-disable-static}} &
   \multicolumn{1}{c}{\textbf{-{}-datarootdir}} &
   \multicolumn{1}{c}{\textbf{-{}-docdir}} &
   \multicolumn{1}{c}{\textbf{-{}-htmldir}} &
   \multicolumn{1}{c}{\textbf{-{}-with-sysroot}} \\
   \midrule
-  0, 1, 2, 3& No  & No  & No  & No  & No  & No  \\
-  4 & Yes & No  & No  & No  & No  & No  \\
-  5 & Yes & Yes & No  & No  & No  & No  \\
-  6 & Yes & Yes & No  & Yes & Yes & No  \\
-  7 & Yes & Yes & No  & Yes & Yes & Yes \\
-  8 & Yes & Yes & Yes & Yes & Yes & Yes \\
+  0, 1, 2, 3& No  & No  & No  & No  & No  & No  & No  \\
+  4 & Yes & No  & No  & No  & No  & No  & No  \\
+  5 & Yes & Yes & No  & No  & No  & No  & No  \\
+  6 & Yes & Yes & No  & No  & Yes & Yes & No  \\
+  7 & Yes & Yes & No  & No  & Yes & Yes & Yes \\
+  8 & Yes & Yes & Yes & Yes & Yes & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2021-05-24 Thread Ulrich Müller
commit: deb235b793539a91c9b4e01a57fd022af57f3df7
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun May 23 09:45:56 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon May 24 19:19:39 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=deb235b7

EAPI 8 has an empty working directory in pkg_* phases

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

 eapi-differences.tex |  4 
 ebuild-functions.tex | 26 +-
 2 files changed, 25 insertions(+), 5 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index f3af563..08c4e9f 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -111,6 +111,9 @@ Use dependencies & \compactfeatureref{use-deps} &
 \t{!!}\ blockers & \compactfeatureref{bang-strength} &
 * & Strong & Strong & Strong & Strong \\
 
+Working directory in \t{pkg_*} phases & \compactfeatureref{phase-function-dir} 
&
+Any & Any & Any & Any & Empty \\
+
 \t{S} to \t{WORKDIR} fallback & \compactfeatureref{s-workdir-fallback} &
 * & Conditional & Conditional & Conditional & Conditional \\
 
@@ -494,6 +497,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item Bash version is 5.0, \featureref{bash-version}.
 \item Selective fetch/mirror restriction, \featureref{uri-restrict}.
 \item \t{IDEPEND}, \featureref{idepend}.
+\item Empty working directory in \t{pkg_*} phase functions, 
\featureref{phase-function-dir}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/ebuild-functions.tex b/ebuild-functions.tex
index ffdea16..00fd259 100644
--- a/ebuild-functions.tex
+++ b/ebuild-functions.tex
@@ -22,11 +22,13 @@ Ebuilds must not call nor assume the existence of any phase 
functions.
 \subsection{Initial working directories}
 \label{sec:s-to-workdir-fallback}
 
-Some functions may assume that their initial working directory is set to a 
particular location;
-these are noted below. If no initial working directory is mandated, it may be 
set to anything and
-the ebuild must not rely upon a particular location for it. The ebuild 
\emph{may} assume that the
-initial working directory for any phase is a trusted location that may only be 
written to by a
-privileged user and group.
+\featurelabel{phase-function-dir} Some functions may assume that their initial 
working directory is
+set to a particular location; these are noted below. If no initial working 
directory is mandated,
+then for EAPIs listed in table~\ref{tab:function-dirs} as having an empty 
directory, it must be set
+to a dedicated directory that is empty at the start of the function and may be 
read-only. For other
+EAPIs, it may be set to anything. The ebuild must not rely upon a particular 
location for it.
+The ebuild \emph{may} assume that the initial working directory for any phase 
is a trusted location
+that may only be written to by a privileged user and group.
 
 \featurelabel{s-workdir-fallback} Some functions are described as having an 
initial working
 directory of \t{S} with an error or fallback to \t{WORKDIR}\@. For EAPIs 
listed in
@@ -44,6 +46,20 @@ fallback to \t{WORKDIR} is used:
 executed, are in \t{DEFINED_PHASES}.
 \end{compactitem}
 
+\ChangeWhenAddingAnEAPI{8}
+\begin{centertable}{Initial working directory in \t{pkg_*} phase functions for 
EAPIs}
+\label{tab:function-dirs}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Initial working directory?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7  & Any   \\
+  8   & Empty \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \ChangeWhenAddingAnEAPI{8}
 \begin{centertable}{EAPIs with \t{S} to \t{WORKDIR} fallbacks}
 \label{tab:s-fallback-table}



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

2021-05-24 Thread Ulrich Müller
commit: 784ab67c64f0981a3fb4496d2d3890054fc80163
Author: Ulrich Müller  gentoo  org>
AuthorDate: Thu May 10 17:17:19 2018 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon May 24 19:19:39 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=784ab67c

EAPI feature table: Consolidate EAPIs 0 to 4

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

 eapi-differences.tex | 191 +--
 1 file changed, 93 insertions(+), 98 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index d5513c3..38109ec 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -1,23 +1,22 @@
 \chapter{Feature Availability by EAPI}
 
 \note{This chapter is informative and for convenience only. Refer to the main 
text for specifics.
-For lack of space, EAPIs 0, 1, 2, and~3 have been consolidated into a single 
column in the table
+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
 
 \ChangeWhenAddingAnEAPI{8}
 \begin{landscape}
-\begin{longtable}{llP{7.5em}P{7.5em}P{7.5em}P{7.5em}P{7.5em}P{7.5em}}
+\begin{longtable}{llP{7.5em}P{7.5em}P{7.5em}P{7.5em}P{7.5em}}
 \caption{Features in EAPIs}\\
 \toprule
 \multicolumn{1}{c}{\textbf{Feature}} &
 \multicolumn{1}{c}{\textbf{Reference}} &
-\multicolumn{6}{c}{\textbf{EAPIs}} \\
+\multicolumn{5}{c}{\textbf{EAPIs}} \\
 \multicolumn{1}{c}{} &
 \multicolumn{1}{c}{} &
-\multicolumn{1}{c}{0, 1, 2, 3} &
-\multicolumn{1}{c}{4} &
+\multicolumn{1}{c}{0, 1, 2, 3, 4} &
 \multicolumn{1}{c}{5} &
 \multicolumn{1}{c}{6} &
 \multicolumn{1}{c}{7} &
@@ -27,11 +26,10 @@ of this document for a complete table of previous EAPIs.}
 \midrule
 \multicolumn{1}{c}{\textbf{Feature}} &
 \multicolumn{1}{c}{\textbf{Reference}} &
-\multicolumn{6}{c}{\textbf{EAPIs}} \\
+\multicolumn{5}{c}{\textbf{EAPIs}} \\
 \multicolumn{1}{c}{} &
 \multicolumn{1}{c}{} &
-\multicolumn{1}{c}{0, 1, 2, 3} &
-\multicolumn{1}{c}{4} &
+\multicolumn{1}{c}{0, 1, 2, 3, 4} &
 \multicolumn{1}{c}{5} &
 \multicolumn{1}{c}{6} &
 \multicolumn{1}{c}{7} &
@@ -44,92 +42,92 @@ of this document for a complete table of previous EAPIs.}
 \endlastfoot
 
 \t{package.mask} directory & \compactfeatureref{package-mask-dir} &
-No & No & No & No & Yes & Yes \\
+No & No & No & Yes & Yes \\
 
 Profile files as directories & \compactfeatureref{profile-file-dirs} &
-No & No & No & No & Yes & Yes \\
+No & No & No & Yes & Yes \\
 
 \t{package.provided} & \compactfeatureref{package-provided} &
-Optional & Optional & Optional & Optional & No & No \\
+Optional & Optional & Optional & No & No \\
 
 Stable use masking/forcing & \compactfeatureref{stablemask} &
-No & No & Yes & Yes & Yes & Yes \\
+No & Yes & Yes & Yes & Yes \\
 
 Bash version & \compactfeatureref{bash-version} &
-3.2 & 3.2 & 3.2 & 4.2 & 4.2 & 4.2 \\
+3.2 & 3.2 & 4.2 & 4.2 & 4.2 \\
 
 \t{failglob} in global scope & \compactfeatureref{failglob} &
-No & No & No & Yes & Yes & Yes \\
+No & No & Yes & Yes & Yes \\
 
 \t{IUSE} defaults & \compactfeatureref{iuse-defaults} &
-* & Yes & Yes & Yes & Yes & Yes \\
+* & Yes & Yes & Yes & Yes \\
 
 \t{REQUIRED_USE} & \compactfeatureref{required-use} &
-No & Yes & Yes & Yes & Yes & Yes \\
+* & Yes & Yes & Yes & Yes \\
 
 \t{PROPERTIES} & \compactfeatureref{properties} &
-Optionally & Yes & Yes & Yes & Yes & Yes \\
+* & Yes & Yes & Yes & Yes \\
 
 \t{SRC_URI} arrows & \compactfeatureref{src-uri-arrows} &
-* & Yes & Yes & Yes & Yes & Yes \\
+* & Yes & Yes & Yes & Yes \\
 
 \t{RDEPEND=DEPEND} & \compactfeatureref{rdepend-depend} &
-Yes & No & No & No & No & No \\
+* & No & No & No & No \\
 
 \t{DEFINED_PHASES} & \compactfeatureref{defined-phases} &
-Optionally & Yes & Yes & Yes & Yes & Yes \\
+* & Yes & Yes & Yes & Yes \\
 
 \t{BDEPEND} & \compactfeatureref{bdepend} &
-No & No & No & No & Yes & Yes \\
+No & No & No & Yes & Yes \\
 
 \t{??\ ( )} groups & \compactfeatureref{at-most-one-of} &
-No & No & Yes & Yes & Yes & Yes \\
+No & Yes & Yes & Yes & Yes \\
 
 Empty \t{||}, \t{\textasciicircum\textasciicircum} groups match &
 \compactfeatureref{empty-dep-groups} &
-Yes & Yes & Yes & Yes & No & No \\
+Yes & Yes & Yes & No & No \\
 
 Slot dependencies & \compactfeatureref{slot-deps} &
-* & Named & Named and Operator & Named and Operator & Named and Operator & 
Named and Operator \\
+* & Named and Operator & Named and Operator & Named and Operator & Named 
and Operator \\
 
 Sub-slots & \compactfeatureref{sub-slot} &
-No & No & Yes & Yes & Yes & Yes \\
+No & Yes & Yes & Yes & Yes \\
 
 Use dependencies & \compactfeatureref{use-deps} &
-* & 4-style & 4-style & 4-style & 4-style & 4-style \\
+  

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

2021-05-24 Thread Ulrich Müller
commit: 0246dbf298b67f64b30ff7ec11e74c6060389a10
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun May 16 18:46:09 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon May 24 19:19:39 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=0246dbf2

EAPI 8 accumulates PROPERTIES and RESTRICT across eclasses

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

 eapi-differences.tex |  4 
 eclasses.tex | 27 ++-
 2 files changed, 26 insertions(+), 5 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index aeddb6e..4cd6b8b 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -152,6 +152,9 @@ Parallel tests & \compactfeatureref{parallel-tests} &
 \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
 \t{src_compile}, \t{src_test}, \t{src_install} \\
 
+Accumulate \t{RESTRICT} etc. & \compactfeatureref{accumulate-vars} &
+No & No & No & No & Yes \\
+
 \t{AA} & \compactfeatureref{aa} &
 * & No & No & No & No \\
 
@@ -499,6 +502,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{IDEPEND}, \featureref{idepend}.
 \item Empty working directory in \t{pkg_*} phase functions, 
\featureref{phase-function-dir}.
 \item Different \t{src_prepare} implementation, \featureref{src-prepare}.
+\item \t{PROPERTIES}, \t{RESTRICT} accumulated across eclasses, 
\featureref{accumulate-vars}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/eclasses.tex b/eclasses.tex
index 7f4ba67..a92ce1f 100644
--- a/eclasses.tex
+++ b/eclasses.tex
@@ -34,11 +34,28 @@ The \t{inherit} command must also ensure that:
 
 \section{Eclass-defined Metadata Keys}
 
-The \t{IUSE}, \t{REQUIRED_USE}, \t{DEPEND}, \t{BDEPEND}, \t{RDEPEND}, 
\t{PDEPEND} and \t{IDEPEND}
-variables are handled specially when set by an eclass. They must be 
accumulated across eclasses,
-appending the value set by each eclass to the resulting value after the 
previous one is loaded.
-Then the eclass-defined value is appended to that defined by the ebuild. In 
the case of \t{RDEPEND},
-this is done after the implicit \t{RDEPEND} rules in 
section~\ref{sec:rdepend-depend} are applied.
+\featurelabel{accumulate-vars} The \t{IUSE}, \t{REQUIRED_USE}, \t{DEPEND}, 
\t{BDEPEND}, \t{RDEPEND},
+\t{PDEPEND} and \t{IDEPEND} variables are handled specially when set by an 
eclass. They must be
+accumulated across eclasses, appending the value set by each eclass to the 
resulting value after
+the previous one is loaded. For EAPIs listed in 
table~\ref{tab:accumulate-vars} as accumulating
+\t{PROPERTIES} and \t{RESTRICT}, the same is true for these variables. Then 
the eclass-defined
+value is appended to that defined by the ebuild. In the case of \t{RDEPEND}, 
this is done after
+the implicit \t{RDEPEND} rules in section~\ref{sec:rdepend-depend} are applied.
+
+\ChangeWhenAddingAnEAPI{8}
+\begin{centertable}{EAPIs accumulating \t{PROPERTIES} and \t{RESTRICT} across 
eclasses}
+\label{tab:accumulate-vars}
+\begin{tabular}{lll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Accumulates \t{PROPERTIES}?}} &
+  \multicolumn{1}{c}{\textbf{Accumulates \t{RESTRICT}?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7  & No  & No  \\
+  8   & Yes & Yes \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
 
 \section{EXPORT_FUNCTIONS}
 



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

2021-05-24 Thread Ulrich Müller
commit: 244623f1a4a5e0f1496e42e0e5a0af8e5967ca71
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun May 16 16:44:50 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon May 24 19:19:39 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=244623f1

EAPI 8 has less strict naming rules in the updates directory

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

 eapi-differences.tex |  5 -
 tree-layout.tex  | 25 +
 2 files changed, 25 insertions(+), 5 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 38109ec..b89ede0 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -44,6 +44,9 @@ of this document for a complete table of previous EAPIs.}
 \t{package.mask} directory & \compactfeatureref{package-mask-dir} &
 No & No & No & Yes & Yes \\
 
+Less strict filenames in \t{updates} & \compactfeatureref{updates-filenames} &
+No & No & No & No & Yes \\
+
 Profile files as directories & \compactfeatureref{profile-file-dirs} &
 No & No & No & Yes & Yes \\
 
@@ -481,7 +484,7 @@ EAPI 7 is EAPI 6 with the following changes:
 EAPI 8 is EAPI 7 with the following changes:
 
 \begin{compactitem}
-\item None
+\item Less strict naming rules for files in \t{updates} directory, 
\featureref{updates-filenames}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/tree-layout.tex b/tree-layout.tex
index 81599a9..aa04d3d 100644
--- a/tree-layout.tex
+++ b/tree-layout.tex
@@ -207,11 +207,14 @@ differs from that described in \t{use.desc}.
 
 \subsection{The updates directory}
 \label{sec:updates-dir}
-The \t{updates} directory is used to inform the package manager that a package 
has moved categories,
-names, or that a version has changed SLOT\@. It contains one file per quarter 
year, named
+\featurelabel{updates-filenames} The \t{updates} directory is used to inform 
the package manager
+that a package has moved categories, names, or that a version has changed 
SLOT\@. For EAPIs
+so specified by table~\ref{tab:updates-filenames}, it contains one file per 
quarter year, named
 \t{[1-4]Q-[]} for the first to fourth quarter of a given year, for example 
\t{1Q-2004} or
-\t{3Q-2006}. The format of each file is again line-based, with each line 
having one of the following
-formats:
+\t{3Q-2006}. For other EAPIs, all regular files in this directory will be 
processed, unless their
+name begins with a dot.
+
+The format of each file is again line-based, with each line having one of the 
following formats:
 \begin{verbatim}
 move  
 slotmove   
@@ -230,6 +233,20 @@ Any name that has appeared as the origin of a move must 
not be reused in the fut
 that has appeared as the origin of a slot move may not be used by packages 
matching the spec of
 that slot move in the future.
 
+\ChangeWhenAddingAnEAPI{8}
+\begin{centertable}{Naming rules for files in \t{updates} directory for EAPIs}
+\label{tab:updates-filenames}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Files per quarter year?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7  & Yes \\
+  8   & No  \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \section{The Licenses Directory}
 \label{sec:licenses-dir}
 



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

2021-05-24 Thread Ulrich Müller
commit: a52c83ee5281a393ffc1ed6a590e892557d11d54
Author: Ulrich Müller  gentoo  org>
AuthorDate: Thu May 10 17:19:32 2018 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon May 24 19:19:39 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=a52c83ee

eapis.tex: Merge redundant descriptions

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

 eapis.tex | 16 +++-
 1 file changed, 3 insertions(+), 13 deletions(-)

diff --git a/eapis.tex b/eapis.tex
index 746decf..f902869 100644
--- a/eapis.tex
+++ b/eapis.tex
@@ -17,20 +17,10 @@ EAPIs are also used for profile directories, as described 
in section~\ref{sec:pr
 
 \section{Defined EAPIs}
 
-The following EAPIs are defined by this specification:
-
 \ChangeWhenAddingAnEAPI{8}
-\begin{compactdesc}
-\item[0] The `original' base EAPI.
-\item[1] EAPI `1' contains a number of extensions to EAPI `0'.
-\item[2] EAPI `2' contains a number of extensions to EAPI `1'.
-\item[3] EAPI `3' contains a number of extensions to EAPI `2'.
-\item[4] EAPI `4' contains a number of extensions to EAPI `3'.
-\item[5] EAPI `5' contains a number of extensions to EAPI `4'.
-\item[6] EAPI `6' contains a number of extensions to EAPI `5'.
-\item[7] EAPI `7' contains a number of extensions to EAPI `6'.
-\item[8] EAPI `8' contains a number of extensions to EAPI `7'.
-\end{compactdesc}
+This specification defines EAPIs `0', `1', `2', `3', `4', `5', `6', `7', 
and~`8'.
+EAPI~`0' is the `original' base EAPI\@. Each of the later EAPIs contains a 
number of extensions
+to its predecessor.
 
 Except where explicitly noted, everything in this specification
 applies to all of the above EAPIs.%



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

2021-05-24 Thread Ulrich Müller
commit: f3ed73959e6cc3f76c18d0b8feaa6f11aae54915
Author: Ulrich Müller  gentoo  org>
AuthorDate: Mon May 17 19:30:41 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon May 24 19:19:39 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=f3ed7395

Split the econf options table because it has become too wide

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

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

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index e74f730..817b52b 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -346,23 +346,28 @@ commands once the current phase function has returned.
 \ChangeWhenAddingAnEAPI{8}
 \begin{centertable}{Extra \t{econf} arguments for EAPIs}
 \label{tab:econf-options-table}
-\begin{tabular}{}
+\begin{tabular}{l}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{1}{P{9em}}{\textbf{-{}-disable-dependency-tracking}} &
-  \multicolumn{1}{P{5em}}{\textbf{-{}-disable-silent-rules}} &
-  \multicolumn{1}{c}{\textbf{-{}-disable-static}} &
   \multicolumn{1}{c}{\textbf{-{}-datarootdir}} &
   \multicolumn{1}{c}{\textbf{-{}-docdir}} &
   \multicolumn{1}{c}{\textbf{-{}-htmldir}} &
   \multicolumn{1}{c}{\textbf{-{}-with-sysroot}} \\
   \midrule
-  0, 1, 2, 3& No  & No  & No  & No  & No  & No  & No  \\
-  4 & Yes & No  & No  & No  & No  & No  & No  \\
-  5 & Yes & Yes & No  & No  & No  & No  & No  \\
-  6 & Yes & Yes & No  & No  & Yes & Yes & No  \\
-  7 & Yes & Yes & No  & No  & Yes & Yes & Yes \\
-  8 & Yes & Yes & Yes & Yes & Yes & Yes & Yes \\
+  0, 1, 2, 3, 4, 5  & No  & No  & No  & No  \\
+  6 & No  & Yes & Yes & No  \\
+  7 & No  & Yes & Yes & Yes \\
+  8 & Yes & Yes & Yes & Yes \\
+  \midrule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{P{5.5em}}{\textbf{-{}-disable-dependency-tracking}} &
+  \multicolumn{1}{P{5em}}{\textbf{-{}-disable-silent-rules}} &
+  \multicolumn{1}{c}{\textbf{-{}-disable-static}} & \\
+  \midrule
+  0, 1, 2, 3& No  & No  & No  & \\
+  4 & Yes & No  & No  & \\
+  5, 6, 7   & Yes & Yes & No  & \\
+  8 & Yes & Yes & Yes & \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2021-05-24 Thread Ulrich Müller
commit: 63fcb765df29dbececb74336e04f27272a8c44f1
Author: Michał Górny  gentoo  org>
AuthorDate: Tue Dec 24 09:46:26 2019 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon May 24 19:19:39 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=63fcb765

EAPI 8 has econf passing --datarootdir

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

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 8b1f7a6..41f7294 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -272,7 +272,7 @@ Output commands use stdout & 
\compactfeatureref{output-no-stdout} &
 disable dependency tracking, disable silent rules &
 disable dependency tracking, disable silent rules, docdir, htmldir &
 disable dependency tracking, disable silent rules, docdir, htmldir, with 
sysroot &
-disable dependency tracking, disable silent rules, docdir, htmldir, with 
sysroot \\
+disable dependency tracking, disable silent rules, datarootdir, docdir, 
htmldir, with sysroot \\
 
 \t{dodoc -r} & \compactfeatureref{dodoc} &
 * & Yes & Yes & Yes & Yes \\
@@ -514,6 +514,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{PROPERTIES}, \t{RESTRICT} accumulated across eclasses, 
\featureref{accumulate-vars}.
 \item \t{useq} banned, \featureref{banned-commands}.
 \item \t{hasv} and \t{hasq} banned, \featureref{banned-commands}.
+\item \t{econf} adds \t{-{}-datarootdir}, \featureref{econf-options}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index c56e592..7909bdd 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -312,6 +312,9 @@ commands once the current phase function has returned.
 \item \t{-{}-mandir} must be \t{\$\{EPREFIX\}/usr/share/man}
 \item \t{-{}-infodir} must be \t{\$\{EPREFIX\}/usr/share/info}
 \item \t{-{}-datadir} must be \t{\$\{EPREFIX\}/usr/share}
+\item \t{-{}-datarootdir} must be \t{\$\{EPREFIX\}/usr/share}, 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{-{}-datarootdir} occurs in the output of \t{configure 
-{}-help}.
 \item \t{-{}-sysconfdir} must be \t{\$\{EPREFIX\}/etc}
 \item \t{-{}-localstatedir} must be \t{\$\{EPREFIX\}/var/lib}
 \item \t{-{}-docdir} must be \t{\$\{EPREFIX\}/usr/share/doc/\$\{PF\}}, if 
the EAPI is listed in
@@ -340,20 +343,22 @@ commands once the current phase function has returned.
 \ChangeWhenAddingAnEAPI{8}
 \begin{centertable}{Extra \t{econf} arguments for EAPIs}
 \label{tab:econf-options-table}
-\begin{tabular}{ll}
+\begin{tabular}{lll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{P{9em}}{\textbf{-{}-disable-dependency-tracking}} &
   \multicolumn{1}{P{5em}}{\textbf{-{}-disable-silent-rules}} &
+  \multicolumn{1}{c}{\textbf{-{}-datarootdir}} &
   \multicolumn{1}{c}{\textbf{-{}-docdir}} &
   \multicolumn{1}{c}{\textbf{-{}-htmldir}} &
   \multicolumn{1}{c}{\textbf{-{}-with-sysroot}} \\
   \midrule
-  0, 1, 2, 3& No  & No  & No  & No  & No  \\
-  4 & Yes & No  & No  & No  & No  \\
-  5 & Yes & Yes & No  & No  & No  \\
-  6 & Yes & Yes & Yes & Yes & No  \\
-  7, 8  & Yes & Yes & Yes & Yes & Yes \\
+  0, 1, 2, 3& No  & No  & No  & No  & No  & No  \\
+  4 & Yes & No  & No  & No  & No  & No  \\
+  5 & Yes & Yes & No  & No  & No  & No  \\
+  6 & Yes & Yes & No  & Yes & Yes & No  \\
+  7 & Yes & Yes & No  & Yes & Yes & Yes \\
+  8 & Yes & Yes & Yes & Yes & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2021-05-24 Thread Ulrich Müller
commit: 11266ab01b368d08fb5a5aa07c4c6fe69c9d260e
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun May 16 19:06:02 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon May 24 19:19:39 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=11266ab0

EAPI 8: Default src_prepare doesn't accept options in PATCHES

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

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 842e09f..aeddb6e 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -124,7 +124,7 @@ Working directory in \t{pkg_*} phases & 
\compactfeatureref{phase-function-dir} &
 * & Yes & Yes & Yes & Yes \\
 
 \t{src_prepare} style & \compactfeatureref{src-prepare} &
-* & no-op & 6 & 6 & 6 \\
+* & no-op & 6 & 6 & 8 \\
 
 \t{src_configure} & \compactfeatureref{src-configure} &
 * & Yes & Yes & Yes & Yes \\
@@ -498,6 +498,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item Selective fetch/mirror restriction, \featureref{uri-restrict}.
 \item \t{IDEPEND}, \featureref{idepend}.
 \item Empty working directory in \t{pkg_*} phase functions, 
\featureref{phase-function-dir}.
+\item Different \t{src_prepare} implementation, \featureref{src-prepare}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/ebuild-functions.tex b/ebuild-functions.tex
index b224e0b..d95d8ce 100644
--- a/ebuild-functions.tex
+++ b/ebuild-functions.tex
@@ -142,9 +142,9 @@ post-unpack source preparation.
 The initial working directory is \t{S}, with an error or fallback to 
\t{WORKDIR} as discussed in
 section~\ref{sec:s-to-workdir-fallback}.
 
-For EAPIs listed in table~\ref{tab:src-prepare-table} as using format~6, the 
default
+For EAPIs listed in table~\ref{tab:src-prepare-table} as using format 6 or~8, 
the default
 implementation used when the ebuild lacks the \t{src_prepare} function shall 
behave as in
-listing~\ref{lst:src-prepare-6}.
+listing~\ref{lst:src-prepare-6} or listing~\ref{lst:src-prepare-8}, 
respectively.
 
 For other EAPIs supporting \t{src_prepare}, the default implementation used 
when the ebuild lacks
 the \t{src_prepare} function is a no-op.
@@ -160,7 +160,8 @@ the \t{src_prepare} function is a no-op.
   \midrule
   0, 1  & No  & Not applicable \\
   2, 3, 4, 5& Yes & no-op  \\
-  6, 7, 8   & Yes & 6  \\
+  6, 7  & Yes & 6  \\
+  8 & Yes & 8  \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -179,6 +180,20 @@ src_prepare() {
 \end{verbatim}
 \end{listing}
 
+\begin{listing}[H]
+\caption{\t{src_prepare}, format~8} \label{lst:src-prepare-8}
+\begin{verbatim}
+src_prepare() {
+if [[ $(declare -p PATCHES 2>/dev/null) == "declare -a"* ]]; then
+[[ -n ${PATCHES[@]} ]] && eapply -- "${PATCHES[@]}"
+else
+[[ -n ${PATCHES} ]] && eapply -- ${PATCHES}
+fi
+eapply_user
+}
+\end{verbatim}
+\end{listing}
+
 \subsection{src_configure}
 
 \featurelabel{src-configure} The \t{src_configure} function is only called for 
EAPIs listed in



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

2021-05-24 Thread Ulrich Müller
commit: f9527f5a54e68ad0b0b2cd07b3d197496697ebae
Author: Michał Górny  gentoo  org>
AuthorDate: Sun Dec 22 18:23:57 2019 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon May 24 19:19:39 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=f9527f5a

EAPI 8 has selective URI restrictions

Bug: https://bugs.gentoo.org/371413
Signed-off-by: Michał Górny  gentoo.org>
[Shortened "selective-uri-restrict" label to make it fit in the margin]
Signed-off-by: Ulrich Müller  gentoo.org>

 eapi-differences.tex |  4 
 ebuild-vars.tex  | 18 +-
 2 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index a334881..22f99e2 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -74,6 +74,9 @@ Bash version & \compactfeatureref{bash-version} &
 \t{SRC_URI} arrows & \compactfeatureref{src-uri-arrows} &
 * & Yes & Yes & Yes & Yes \\
 
+Selective URI restrictions & \compactfeatureref{uri-restrict} &
+No & No & No & No & Yes \\
+
 \t{RDEPEND=DEPEND} & \compactfeatureref{rdepend-depend} &
 * & No & No & No & No \\
 
@@ -486,6 +489,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \begin{compactitem}
 \item Less strict naming rules for files in \t{updates} directory, 
\featureref{updates-filenames}.
 \item Bash version is 5.0, \featureref{bash-version}.
+\item Selective fetch/mirror restriction, \featureref{uri-restrict}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index 040b02a..f6b1c26 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -169,16 +169,24 @@ on the right of the arrow. When consulting mirrors 
(except for those explicitly
 of the arrow, if \t{mirror://} is used), the filename to the right of the 
arrow shall be requested
 instead of the filename in the URI.
 
+\featurelabel{uri-restrict} In EAPIs listed in 
table~\ref{tab:uri-arrows-table} as supporting
+selective URI restrictions, the URI protocol can be prefixed by an additional 
\t{fetch+} or
+\t{mirror+} term. If the ebuild is fetch restricted, the \t{fetch+} prefix 
undoes the fetch
+restriction for the URI (but not the implied mirror restriction). If the 
ebuild is fetch or mirror
+restricted, the \t{mirror+} prefix undoes both fetch and mirror restrictions 
for the URI.
+
 \ChangeWhenAddingAnEAPI{8}
-\begin{centertable}{EAPIs supporting \t{SRC_URI} arrows}
+\begin{centertable}{EAPIs supporting \t{SRC_URI} arrows and selective URI 
restrictions}
 \label{tab:uri-arrows-table}
-\begin{tabular}{ll}
+\begin{tabular}{lll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{1}{c}{\textbf{Supports \t{SRC_URI} arrows?}} \\
+  \multicolumn{1}{c}{\textbf{Supports \t{SRC_URI} arrows?}} &
+  \multicolumn{1}{c}{\textbf{Supports selective URI restrictions?}} \\
   \midrule
-  0, 1& No  \\
-  2, 3, 4, 5, 6, 7, 8 & Yes \\
+  0, 1  & No  & No  \\
+  2, 3, 4, 5, 6, 7  & Yes & No  \\
+  8 & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2021-05-24 Thread Ulrich Müller
commit: 35dc5f534febcdd129ceedebcd76d143ae279969
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sat Jan 16 12:00:11 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon May 24 19:19:39 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=35dc5f53

Relicense from CC-BY-SA-3.0 to CC-BY-SA-4.0

Acked-by: Michał Górny  gentoo.org>
Signed-off-by: Ulrich Müller  gentoo.org>

 eapi-cheatsheet.tex | 4 ++--
 pms.tex | 5 +++--
 2 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/eapi-cheatsheet.tex b/eapi-cheatsheet.tex
index d4abb1a..83ddfa7 100644
--- a/eapi-cheatsheet.tex
+++ b/eapi-cheatsheet.tex
@@ -73,8 +73,8 @@
 % to the original author or the PMS team.
 
 This work is released under the Creative Commons
-Attribution-Share Alike 3.0 Licence.%
-\footnote{\url{https://creativecommons.org/licenses/by-sa/3.0/}}
+Attribution-ShareAlike 4.0 International Licence.%
+\footnote{\url{https://creativecommons.org/licenses/by-sa/4.0/}}
 \end{abstract}
 
 \section{EAPIs 0, 1, 2, 3, and 4}

diff --git a/pms.tex b/pms.tex
index f54b1a0..8bbd037 100644
--- a/pms.tex
+++ b/pms.tex
@@ -34,8 +34,9 @@
 \textcopyright{} 2007--2021 Stephen Bennett, Ciaran McCreesh and others. 
Contributions are owned
 by their respective authors, and may have been changed substantially 
before inclusion.
 
-This document is released under the Creative Commons 
Attribution-ShareAlike 3.0 Licence. The
-full text of this licence can be found at 
\url{https://creativecommons.org/licenses/by-sa/3.0/}.
+This work is released under the Creative Commons Attribution-ShareAlike 
4.0 International
+Licence. To~view a copy of this licence, visit
+\url{https://creativecommons.org/licenses/by-sa/4.0/}.
 
 \commitinfo
 }



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

2021-05-24 Thread Ulrich Müller
commit: 2760c39bf0c1f4f55d7faf5aaaf01492a2c99082
Author: Michał Górny  gentoo  org>
AuthorDate: Tue Dec 24 21:50:30 2019 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon May 24 19:19:39 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=2760c39b

EAPI 8 removes .7z, .rar, .lha unpack support

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

 eapi-differences.tex | 10 ++
 pkg-mgr-commands.tex | 21 ++---
 2 files changed, 24 insertions(+), 7 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index f0ea62c..7f107e9 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -341,6 +341,15 @@ Controllable stripping & \compactfeatureref{dostrip} &
 \t{unpack} support for \t{txz} & \compactfeatureref{unpack-extensions} &
 No & No & Yes & Yes & Yes \\
 
+\t{unpack} support for \t{7z} & \compactfeatureref{unpack-extensions} &
+Yes & Yes & Yes & Yes & No \\
+
+\t{unpack} support for \t{lha} & \compactfeatureref{unpack-extensions} &
+Yes & Yes & Yes & Yes & No \\
+
+\t{unpack} support for \t{rar} & \compactfeatureref{unpack-extensions} &
+Yes & Yes & Yes & Yes & No \\
+
 \t{unpack} case-insensitive & \compactfeatureref{unpack-ignore-case} &
 No & No & Yes & Yes & Yes \\
 
@@ -533,6 +542,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{insopts} no longer affects \t{doconfd}, \t{doenvd} and \t{doheader}, 
\featureref{insopts}.
 \item \t{exeopts} no longer affects \t{doinitd}, \featureref{exeopts}.
 \item \t{usev} supports an optional second argument, \featureref{usev}.
+\item \t{unpack} no longer supports \t{.7z}, \t{.rar}, \t{.lha}, 
\featureref{unpack-extensions}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index eac17de..848c8da 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -1153,10 +1153,13 @@ has returned.
 \item bzip2-compressed tar files (\t{*.tar.bz2, *.tbz2, *.tar.bz, *.tbz}). 
Ebuilds must ensure
 that bzip2 and GNU tar are installed.
 \item zip files (\t{*.zip, *.ZIP, *.jar}). Ebuilds must ensure that 
Info-ZIP Unzip is installed.
-\item 7zip files (\t{*.7z, *.7Z}). Ebuilds must ensure that P7ZIP is 
installed.
+\item 7zip files (\t{*.7z, *.7Z}). Ebuilds must ensure that P7ZIP is 
installed. Only for EAPIs
+listed in table~\ref{tab:unpack-extensions-table} as supporting 
\t{.7z}.
 \item rar files (\t{*.rar, *.RAR}). Ebuilds must ensure that RARLAB's 
unrar is installed.
+Only for EAPIs listed in table~\ref{tab:unpack-extensions-table} as 
supporting \t{.rar}.
 \item LHA archives (\t{*.LHA, *.LHa, *.lha, *.lzh}). Ebuilds must ensure 
that the lha program is
-installed.
+installed. Only for EAPIs listed in 
table~\ref{tab:unpack-extensions-table} as supporting
+\t{.lha}.
 \item ar archives (\t{*.a}). Ebuilds must ensure that GNU binutils is 
installed.
 \item deb packages (\t{*.deb}). Ebuilds must ensure that the deb2targz 
program is installed on
 those platforms where the GNU binutils ar program is not available and 
the installed ar
@@ -1195,16 +1198,20 @@ has returned.
 \ChangeWhenAddingAnEAPI{8}
 \begin{centertable}{\t{unpack} extensions for EAPIs}
 \label{tab:unpack-extensions-table}
-\begin{tabular}{}
+\begin{tabular}{}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{c}{\textbf{\t{.xz}?}} &
   \multicolumn{1}{c}{\textbf{\t{.tar.xz}?}} &
-  \multicolumn{1}{c}{\textbf{\t{.txz}?}} \\
+  \multicolumn{1}{c}{\textbf{\t{.txz}?}} &
+  \multicolumn{1}{c}{\textbf{\t{.7z}?}} &
+  \multicolumn{1}{c}{\textbf{\t{.rar}?}} &
+  \multicolumn{1}{c}{\textbf{\t{.lha}?}} \\
   \midrule
-  0, 1, 2   & No  & No  & No  \\
-  3, 4, 5   & Yes & Yes & No  \\
-  6, 7, 8   & Yes & Yes & Yes \\
+  0, 1, 2   & No  & No  & No  & Yes & Yes & Yes \\
+  3, 4, 5   & Yes & Yes & No  & Yes & Yes & Yes \\
+  6, 7  & Yes & Yes & Yes & Yes & Yes & Yes \\
+  8 & Yes & Yes & Yes & No  & No  & No  \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2021-05-24 Thread Ulrich Müller
commit: 569bf13926cb7a37d5ada37bca9ad549fa2351d4
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun May 16 18:59:37 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon May 24 19:19:39 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=569bf139

EAPI 8: usev has an optional second argument

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

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 16820dd..f0ea62c 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -317,6 +317,9 @@ Controllable stripping & \compactfeatureref{dostrip} &
 \t{dostrip} & \compactfeatureref{dostrip} &
 No & No & No & Yes & Yes \\
 
+\t{usev} second arg & \compactfeatureref{usev} &
+No & No & No & No & Yes \\
+
 \t{use_with} empty third arg & \compactfeatureref{use-with} &
 * & Yes & Yes & Yes & Yes \\
 
@@ -529,6 +532,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{dosym} can create relative paths, \featureref{dosym-relative}.
 \item \t{insopts} no longer affects \t{doconfd}, \t{doenvd} and \t{doheader}, 
\featureref{insopts}.
 \item \t{exeopts} no longer affects \t{doinitd}, \featureref{exeopts}.
+\item \t{usev} supports an optional second argument, \featureref{usev}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 58254fa..eac17de 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -936,15 +936,17 @@ table~\ref{tab:use-list-strictness}.
 \item[use] Returns shell true (0) if the first argument (a \t{USE} flag name) 
is enabled, false
 otherwise.  If the flag name is prefixed with \t{!}, returns true if the 
flag is disabled, and
 false if it is enabled. It is guaranteed that this command is quiet.
-\item[usev] The same as \t{use}, but also prints the flag name if the condition
-is met.
+\item[usev] \featurelabel{usev} The same as \t{use}, but also prints the flag 
name if the condition
+is met. In EAPIs listed in table~\ref{tab:use-list-args} as supporting an 
optional second
+argument for \t{usev}, prints the second argument instead, if it is 
specified and if the
+condition is met.
 \item[useq] Deprecated synonym for \t{use}.
 In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as per
 section~\ref{sec:banned-commands}.
 \item[use_with] \featurelabel{use-with} Has one-, two-, and three-argument 
forms. The first
 argument is a USE flag name, the second a \t{configure} option name 
(\t{\$\{opt\}}), defaulting
 to the same as the first argument if not provided, and the third is a 
string value
-(\t{\$\{value\}}). For EAPIs listed in table~\ref{tab:use-with-third-arg} 
as not supporting it,
+(\t{\$\{value\}}). For EAPIs listed in table~\ref{tab:use-list-args} as 
not supporting it,
 an empty third argument is treated as if it weren't provided. If the USE 
flag is set, outputs
 \t{-{}-with-\$\{opt\}=\$\{value\}} if the third argument was provided, and
 \t{-{}-with-\$\{opt\}} otherwise. If the flag is not set, then it outputs
@@ -979,15 +981,18 @@ table~\ref{tab:use-list-strictness}.
 \end{centertable}
 
 \ChangeWhenAddingAnEAPI{8}
-\begin{centertable}{EAPIs supporting empty third argument in \t{use_with} and 
\t{use_enable}}
-\label{tab:use-with-third-arg}
-\begin{tabular}{ll}
+\begin{centertable}{\t{usev}, \t{use_with} and \t{use_enable} arguments for 
EAPIs}
+\label{tab:use-list-args}
+\begin{tabular}{lll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{1}{c}{\textbf{Supports empty third argument?}} \\
+  \multicolumn{1}{P{8em}}{\textbf{\t{usev} has optional second argument?}} 
&
+  \multicolumn{1}{P{14em}}{\textbf{\t{use_with} and \t{use_enable} support 
empty third
+argument?}} \\
   \midrule
-  0, 1, 2, 3& No  \\
-  4, 5, 6, 7, 8 & Yes \\
+  0, 1, 2, 3& No  & No  \\
+  4, 5, 6, 7& No  & Yes \\
+  8 & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2021-05-24 Thread Ulrich Müller
commit: 364f563408ff94793285b0d49a00204af5c6d991
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun May 16 18:59:37 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon May 24 09:24:49 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=364f5634

EAPI 8: usev has an optional second argument

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

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 2ac78ba..9b1e98b 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -317,6 +317,9 @@ Controllable stripping & \compactfeatureref{dostrip} &
 \t{dostrip} & \compactfeatureref{dostrip} &
 No & No & No & Yes & Yes \\
 
+\t{usev} second arg & \compactfeatureref{usev} &
+No & No & No & No & Yes \\
+
 \t{use_with} empty third arg & \compactfeatureref{use-with} &
 * & Yes & Yes & Yes & Yes \\
 
@@ -529,6 +532,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{dosym} can create relative paths, \featureref{dosym-relative}.
 \item \t{insopts} no longer affects \t{doconfd}, \t{doenvd} and \t{doheader}, 
\featureref{insopts}.
 \item \t{exeopts} no longer affects \t{doinitd}, \featureref{exeopts}.
+\item \t{usev} supports an optional second argument, \featureref{usev}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 566c103..0520f92 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -936,15 +936,17 @@ table~\ref{tab:use-list-strictness}.
 \item[use] Returns shell true (0) if the first argument (a \t{USE} flag name) 
is enabled, false
 otherwise.  If the flag name is prefixed with \t{!}, returns true if the 
flag is disabled, and
 false if it is enabled. It is guaranteed that this command is quiet.
-\item[usev] The same as \t{use}, but also prints the flag name if the condition
-is met.
+\item[usev] \featurelabel{usev} The same as \t{use}, but also prints the flag 
name if the condition
+is met. In EAPIs listed in table~\ref{tab:use-list-args} as supporting an 
optional second
+argument for \t{usev}, prints the second argument instead, if it is 
specified and if the
+condition is met.
 \item[useq] Deprecated synonym for \t{use}.
 In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as per
 section~\ref{sec:banned-commands}.
 \item[use_with] \featurelabel{use-with} Has one-, two-, and three-argument 
forms. The first
 argument is a USE flag name, the second a \t{configure} option name 
(\t{\$\{opt\}}), defaulting
 to the same as the first argument if not provided, and the third is a 
string value
-(\t{\$\{value\}}). For EAPIs listed in table~\ref{tab:use-with-third-arg} 
as not supporting it,
+(\t{\$\{value\}}). For EAPIs listed in table~\ref{tab:use-list-args} as 
not supporting it,
 an empty third argument is treated as if it weren't provided. If the USE 
flag is set, outputs
 \t{-{}-with-\$\{opt\}=\$\{value\}} if the third argument was provided, and
 \t{-{}-with-\$\{opt\}} otherwise. If the flag is not set, then it outputs
@@ -979,15 +981,18 @@ table~\ref{tab:use-list-strictness}.
 \end{centertable}
 
 \ChangeWhenAddingAnEAPI{8}
-\begin{centertable}{EAPIs supporting empty third argument in \t{use_with} and 
\t{use_enable}}
-\label{tab:use-with-third-arg}
-\begin{tabular}{ll}
+\begin{centertable}{\t{usev}, \t{use_with} and \t{use_enable} arguments for 
EAPIs}
+\label{tab:use-list-args}
+\begin{tabular}{lll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{1}{c}{\textbf{Supports empty third argument?}} \\
+  \multicolumn{1}{P{8em}}{\textbf{\t{usev} has optional second argument?}} 
&
+  \multicolumn{1}{P{14em}}{\textbf{\t{use_with} and \t{use_enable} support 
empty third
+argument?}} \\
   \midrule
-  0, 1, 2, 3& No  \\
-  4, 5, 6, 7, 8 & Yes \\
+  0, 1, 2, 3& No  & No  \\
+  4, 5, 6, 7& No  & Yes \\
+  8 & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2021-05-24 Thread Ulrich Müller
commit: 4fc292a5b8a0d453c4866199645e461a33e53a10
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun May 16 16:15:04 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon May 24 09:24:49 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=4fc292a5

EAPI 8: insopts and exeopts affect only doins and doexe

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

 eapi-differences.tex |  8 +++
 pkg-mgr-commands.tex | 64 ++--
 2 files changed, 60 insertions(+), 12 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index ebe5ccc..2ac78ba 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -299,6 +299,12 @@ Output commands use stdout & 
\compactfeatureref{output-no-stdout} &
 \t{new*} support stdin & \compactfeatureref{newfoo-stdin} &
 No & Yes & Yes & Yes & Yes \\
 
+\t{insopts} affects misc.\ commands & \compactfeatureref{insopts} &
+Yes & Yes & Yes & Yes & No \\
+
+\t{exeopts} affects \t{doinitd} & \compactfeatureref{exeopts} &
+Yes & Yes & Yes & Yes & No \\
+
 Controllable compression & \compactfeatureref{docompress} &
 * & Yes & Yes & Yes & Yes \\
 
@@ -521,6 +527,8 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{econf} adds \t{-{}-datarootdir}, \featureref{econf-options}.
 \item \t{econf} adds \t{-{}-disable-static}, \featureref{econf-options}.
 \item \t{dosym} can create relative paths, \featureref{dosym-relative}.
+\item \t{insopts} no longer affects \t{doconfd}, \t{doenvd} and \t{doheader}, 
\featureref{insopts}.
+\item \t{exeopts} no longer affects \t{doinitd}, \featureref{exeopts}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 323b26d..566c103 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -460,8 +460,9 @@ the current phase function has returned.
 \t{joe:users}. Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
 
 \item[doconfd] Installs the given config files into \t{/etc/conf.d/}, by 
default with file mode
-\t{0644}, or with the \t{install} options set by the most recent 
\t{insopts} call.
-Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
+\t{0644}. For EAPIs listed in table~\ref{tab:insopts-commands} as 
respecting \t{insopts}
+in \t{doconfd}, the \t{install} options set by the most recent \t{insopts} 
call override
+the default. Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
 
 \item[dodir] Creates the given directories, by default with file mode 
\t{0755}, or with the
 \t{install} options set by the most recent \t{diropts} call. Failure 
behaviour is EAPI
@@ -478,8 +479,9 @@ the current phase function has returned.
 section~\ref{sec:failure-behaviour}.
 
 \item[doenvd] Installs the given environment files into \t{/etc/env.d/}, by 
default with file mode
-\t{0644}, or with the \t{install} options set by the most recent 
\t{insopts} call.
-Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
+\t{0644}. For EAPIs listed in table~\ref{tab:insopts-commands} as 
respecting \t{insopts}
+in \t{doenvd}, the \t{install} options set by the most recent \t{insopts} 
call override
+the default. Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
 
 \item[doexe] Installs the given files into the directory specified by the most 
recent \t{exeinto}
 call. If \t{exeinto} has not yet been called, behaviour is undefined. 
Files are installed by
@@ -494,9 +496,10 @@ the current phase function has returned.
 section~\ref{sec:banned-commands}.
 
 \item[doheader] \featurelabel{doheader} Installs the given header files into 
\t{/usr/include/},
-by default with file mode \t{0644}, or with the \t{install} options set by 
the most recent
-\t{insopts} call. If the first argument is \t{-r}, then operates 
recursively, descending
-into any directories given.
+by default with file mode \t{0644}. For EAPIs listed in 
table~\ref{tab:insopts-commands}
+as respecting \t{insopts} in \t{doheader}, the \t{install} options set by 
the most recent
+\t{insopts} call override the default. If the first argument is \t{-r}, 
then operates
+recursively, descending into any directories given.
 Only available in EAPIs listed in table~\ref{tab:doheader-table} as 
supporting \t{doheader}.
 Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
 
@@ -529,8 +532,9 @@ the current phase function has returned.
 \t{0644}. Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
 
 \item[doinitd] Installs the given initscript files into \t{/etc/init.d}, by 
default with file mode
-\t{0755}, or with the \t{install} options set by the most recent 
\t{exeopts} call.
-Failure behaviour is EAPI 

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

2021-05-24 Thread Ulrich Müller
commit: 5f0db8dbf82f6046b86da76b9c8f0931e6dc875f
Author: Michał Górny  gentoo  org>
AuthorDate: Tue Dec 24 21:50:30 2019 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon May 24 09:24:49 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=5f0db8db

EAPI 8 removes .7z, .rar, .lha unpack support

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

 eapi-differences.tex | 10 ++
 pkg-mgr-commands.tex | 21 ++---
 2 files changed, 24 insertions(+), 7 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 9b1e98b..0afc131 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -341,6 +341,15 @@ Controllable stripping & \compactfeatureref{dostrip} &
 \t{unpack} support for \t{txz} & \compactfeatureref{unpack-extensions} &
 No & No & Yes & Yes & Yes \\
 
+\t{unpack} support for \t{7z} & \compactfeatureref{unpack-extensions} &
+Yes & Yes & Yes & Yes & No \\
+
+\t{unpack} support for \t{lha} & \compactfeatureref{unpack-extensions} &
+Yes & Yes & Yes & Yes & No \\
+
+\t{unpack} support for \t{rar} & \compactfeatureref{unpack-extensions} &
+Yes & Yes & Yes & Yes & No \\
+
 \t{unpack} case-insensitive & \compactfeatureref{unpack-ignore-case} &
 No & No & Yes & Yes & Yes \\
 
@@ -533,6 +542,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{insopts} no longer affects \t{doconfd}, \t{doenvd} and \t{doheader}, 
\featureref{insopts}.
 \item \t{exeopts} no longer affects \t{doinitd}, \featureref{exeopts}.
 \item \t{usev} supports an optional second argument, \featureref{usev}.
+\item \t{unpack} no longer supports \t{.7z}, \t{.rar}, \t{.lha}, 
\featureref{unpack-extensions}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 0520f92..33a976b 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -1153,10 +1153,13 @@ has returned.
 \item bzip2-compressed tar files (\t{*.tar.bz2, *.tbz2, *.tar.bz, *.tbz}). 
Ebuilds must ensure
 that bzip2 and GNU tar are installed.
 \item zip files (\t{*.zip, *.ZIP, *.jar}). Ebuilds must ensure that 
Info-ZIP Unzip is installed.
-\item 7zip files (\t{*.7z, *.7Z}). Ebuilds must ensure that P7ZIP is 
installed.
+\item 7zip files (\t{*.7z, *.7Z}). Ebuilds must ensure that P7ZIP is 
installed. Only for EAPIs
+listed in table~\ref{tab:unpack-extensions-table} as supporting 
\t{.7z}.
 \item rar files (\t{*.rar, *.RAR}). Ebuilds must ensure that RARLAB's 
unrar is installed.
+Only for EAPIs listed in table~\ref{tab:unpack-extensions-table} as 
supporting \t{.rar}.
 \item LHA archives (\t{*.LHA, *.LHa, *.lha, *.lzh}). Ebuilds must ensure 
that the lha program is
-installed.
+installed. Only for EAPIs listed in 
table~\ref{tab:unpack-extensions-table} as supporting
+\t{.lha}.
 \item ar archives (\t{*.a}). Ebuilds must ensure that GNU binutils is 
installed.
 \item deb packages (\t{*.deb}). Ebuilds must ensure that the deb2targz 
program is installed on
 those platforms where the GNU binutils ar program is not available and 
the installed ar
@@ -1195,16 +1198,20 @@ has returned.
 \ChangeWhenAddingAnEAPI{8}
 \begin{centertable}{\t{unpack} extensions for EAPIs}
 \label{tab:unpack-extensions-table}
-\begin{tabular}{}
+\begin{tabular}{}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{c}{\textbf{\t{.xz}?}} &
   \multicolumn{1}{c}{\textbf{\t{.tar.xz}?}} &
-  \multicolumn{1}{c}{\textbf{\t{.txz}?}} \\
+  \multicolumn{1}{c}{\textbf{\t{.txz}?}} &
+  \multicolumn{1}{c}{\textbf{\t{.7z}?}} &
+  \multicolumn{1}{c}{\textbf{\t{.rar}?}} &
+  \multicolumn{1}{c}{\textbf{\t{.lha}?}} \\
   \midrule
-  0, 1, 2   & No  & No  & No  \\
-  3, 4, 5   & Yes & Yes & No  \\
-  6, 7, 8   & Yes & Yes & Yes \\
+  0, 1, 2   & No  & No  & No  & Yes & Yes & Yes \\
+  3, 4, 5   & Yes & Yes & No  & Yes & Yes & Yes \\
+  6, 7  & Yes & Yes & Yes & Yes & Yes & Yes \\
+  8 & Yes & Yes & Yes & No  & No  & No  \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2021-05-24 Thread Ulrich Müller
commit: 8aac19dfe15c2605aa9dc1371c21f12ef76995bc
Author: Ulrich Müller  gentoo  org>
AuthorDate: Thu May 10 17:17:19 2018 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon May 24 09:24:49 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=8aac19df

EAPI feature table: Consolidate EAPIs 0 to 4

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

 eapi-differences.tex | 191 +--
 1 file changed, 93 insertions(+), 98 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index d5513c3..38109ec 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -1,23 +1,22 @@
 \chapter{Feature Availability by EAPI}
 
 \note{This chapter is informative and for convenience only. Refer to the main 
text for specifics.
-For lack of space, EAPIs 0, 1, 2, and~3 have been consolidated into a single 
column in the table
+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
 
 \ChangeWhenAddingAnEAPI{8}
 \begin{landscape}
-\begin{longtable}{llP{7.5em}P{7.5em}P{7.5em}P{7.5em}P{7.5em}P{7.5em}}
+\begin{longtable}{llP{7.5em}P{7.5em}P{7.5em}P{7.5em}P{7.5em}}
 \caption{Features in EAPIs}\\
 \toprule
 \multicolumn{1}{c}{\textbf{Feature}} &
 \multicolumn{1}{c}{\textbf{Reference}} &
-\multicolumn{6}{c}{\textbf{EAPIs}} \\
+\multicolumn{5}{c}{\textbf{EAPIs}} \\
 \multicolumn{1}{c}{} &
 \multicolumn{1}{c}{} &
-\multicolumn{1}{c}{0, 1, 2, 3} &
-\multicolumn{1}{c}{4} &
+\multicolumn{1}{c}{0, 1, 2, 3, 4} &
 \multicolumn{1}{c}{5} &
 \multicolumn{1}{c}{6} &
 \multicolumn{1}{c}{7} &
@@ -27,11 +26,10 @@ of this document for a complete table of previous EAPIs.}
 \midrule
 \multicolumn{1}{c}{\textbf{Feature}} &
 \multicolumn{1}{c}{\textbf{Reference}} &
-\multicolumn{6}{c}{\textbf{EAPIs}} \\
+\multicolumn{5}{c}{\textbf{EAPIs}} \\
 \multicolumn{1}{c}{} &
 \multicolumn{1}{c}{} &
-\multicolumn{1}{c}{0, 1, 2, 3} &
-\multicolumn{1}{c}{4} &
+\multicolumn{1}{c}{0, 1, 2, 3, 4} &
 \multicolumn{1}{c}{5} &
 \multicolumn{1}{c}{6} &
 \multicolumn{1}{c}{7} &
@@ -44,92 +42,92 @@ of this document for a complete table of previous EAPIs.}
 \endlastfoot
 
 \t{package.mask} directory & \compactfeatureref{package-mask-dir} &
-No & No & No & No & Yes & Yes \\
+No & No & No & Yes & Yes \\
 
 Profile files as directories & \compactfeatureref{profile-file-dirs} &
-No & No & No & No & Yes & Yes \\
+No & No & No & Yes & Yes \\
 
 \t{package.provided} & \compactfeatureref{package-provided} &
-Optional & Optional & Optional & Optional & No & No \\
+Optional & Optional & Optional & No & No \\
 
 Stable use masking/forcing & \compactfeatureref{stablemask} &
-No & No & Yes & Yes & Yes & Yes \\
+No & Yes & Yes & Yes & Yes \\
 
 Bash version & \compactfeatureref{bash-version} &
-3.2 & 3.2 & 3.2 & 4.2 & 4.2 & 4.2 \\
+3.2 & 3.2 & 4.2 & 4.2 & 4.2 \\
 
 \t{failglob} in global scope & \compactfeatureref{failglob} &
-No & No & No & Yes & Yes & Yes \\
+No & No & Yes & Yes & Yes \\
 
 \t{IUSE} defaults & \compactfeatureref{iuse-defaults} &
-* & Yes & Yes & Yes & Yes & Yes \\
+* & Yes & Yes & Yes & Yes \\
 
 \t{REQUIRED_USE} & \compactfeatureref{required-use} &
-No & Yes & Yes & Yes & Yes & Yes \\
+* & Yes & Yes & Yes & Yes \\
 
 \t{PROPERTIES} & \compactfeatureref{properties} &
-Optionally & Yes & Yes & Yes & Yes & Yes \\
+* & Yes & Yes & Yes & Yes \\
 
 \t{SRC_URI} arrows & \compactfeatureref{src-uri-arrows} &
-* & Yes & Yes & Yes & Yes & Yes \\
+* & Yes & Yes & Yes & Yes \\
 
 \t{RDEPEND=DEPEND} & \compactfeatureref{rdepend-depend} &
-Yes & No & No & No & No & No \\
+* & No & No & No & No \\
 
 \t{DEFINED_PHASES} & \compactfeatureref{defined-phases} &
-Optionally & Yes & Yes & Yes & Yes & Yes \\
+* & Yes & Yes & Yes & Yes \\
 
 \t{BDEPEND} & \compactfeatureref{bdepend} &
-No & No & No & No & Yes & Yes \\
+No & No & No & Yes & Yes \\
 
 \t{??\ ( )} groups & \compactfeatureref{at-most-one-of} &
-No & No & Yes & Yes & Yes & Yes \\
+No & Yes & Yes & Yes & Yes \\
 
 Empty \t{||}, \t{\textasciicircum\textasciicircum} groups match &
 \compactfeatureref{empty-dep-groups} &
-Yes & Yes & Yes & Yes & No & No \\
+Yes & Yes & Yes & No & No \\
 
 Slot dependencies & \compactfeatureref{slot-deps} &
-* & Named & Named and Operator & Named and Operator & Named and Operator & 
Named and Operator \\
+* & Named and Operator & Named and Operator & Named and Operator & Named 
and Operator \\
 
 Sub-slots & \compactfeatureref{sub-slot} &
-No & No & Yes & Yes & Yes & Yes \\
+No & Yes & Yes & Yes & Yes \\
 
 Use dependencies & \compactfeatureref{use-deps} &
-* & 4-style & 4-style & 4-style & 4-style & 4-style \\
+  

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

2021-05-24 Thread Ulrich Müller
commit: 7ab6f4ddfcea6170da764e5d2bca30001f42564a
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun May 23 14:37:05 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon May 24 09:24:49 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=7ab6f4dd

Rearrange listings of phase functions

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

 eapi-differences.tex |  10 ++--
 ebuild-functions.tex | 164 ---
 2 files changed, 82 insertions(+), 92 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 2c1073a..1174052 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -349,7 +349,7 @@ EAPI 1 is EAPI 0 with the following changes:
 \begin{compactitem}
 \item \t{IUSE} defaults, \featureref{iuse-defaults}.
 \item Slot dependencies, \featureref{slot-deps}.
-\item Different \t{src_compile} implementation, \featureref{src-compile-1}.
+\item Different \t{src_compile} implementation, \featureref{src-compile}.
 \end{compactitem}
 
 \section{EAPI 2}
@@ -362,7 +362,7 @@ EAPI 2 is EAPI 1 with the following changes:
 \item \t{!}\ and \t{!!}\ blockers, \featureref{bang-strength}.
 \item \t{src_prepare}, \featureref{src-prepare}.
 \item \t{src_configure}, \featureref{src-configure}.
-\item Different \t{src_compile} implementation, \featureref{src-compile-2}.
+\item Different \t{src_compile} implementation, \featureref{src-compile}.
 \item \t{default_} phase functions for phases \t{pkg_nofetch}, \t{src_unpack}, 
\t{src_prepare},
 \t{src_configure}, \t{src_compile} and \t{src_test}; 
\featureref{default-phase-funcs}.
 \item \t{doman} language detection by filename, \featureref{doman-langs}.
@@ -391,7 +391,7 @@ EAPI 4 is EAPI 3 with the following changes:
 \item Use dependency defaults, \featureref{use-dep-defaults}.
 \item \t{S} to \t{WORKDIR} fallback restricted, 
\featureref{s-workdir-fallback}.
 \item \t{pkg_pretend}, \featureref{pkg-pretend}.
-\item Default \t{src_install} no longer a no-op, \featureref{src-install-4}.
+\item Default \t{src_install} no longer a no-op, \featureref{src-install}.
 \item \t{pkg_info} can run on non-installed packages, \featureref{pkg-info}.
 \item \t{AA} is gone, \featureref{aa}.
 \item \t{KV} is gone, \featureref{kv}.
@@ -436,8 +436,8 @@ EAPI 6 is EAPI 5 with the following changes:
 \begin{compactitem}
 \item Bash version is 4.2, \featureref{bash-version}.
 \item \t{failglob} is enabled in global scope, \featureref{failglob}.
-\item Default \t{src_prepare} no longer a no-op, \featureref{src-prepare-6}.
-\item Different \t{src_install} implementation, \featureref{src-install-6}.
+\item Default \t{src_prepare} no longer a no-op, \featureref{src-prepare}.
+\item Different \t{src_install} implementation, \featureref{src-install}.
 \item \t{LC_CTYPE} and \t{LC_COLLATE} compatible with POSIX locale, 
\featureref{locale-settings}.
 \item \t{einstall} banned, \featureref{banned-commands}.
 \item \t{die} and \t{assert} called with \t{-n} respect \t{nonfatal}, 
\featureref{nonfatal-die}.

diff --git a/ebuild-functions.tex b/ebuild-functions.tex
index 44b8b43..1bfa957 100644
--- a/ebuild-functions.tex
+++ b/ebuild-functions.tex
@@ -120,10 +120,10 @@ The \t{src_unpack} function extracts all of the package's 
sources. In EAPIs lack
 \t{src_prepare}, it may also apply patches and set up the package's build 
system for further use.
 
 The initial working directory must be \t{WORKDIR}, and the default 
implementation used when
-the ebuild lacks the \t{src_unpack} function shall behave as:
+the ebuild lacks the \t{src_unpack} function shall behave as in 
listing~\ref{lst:src-unpack-0}.
 
 \begin{listing}[H]
-\caption{\t{src_unpack}}
+\caption{\t{src_unpack}} \label{lst:src-unpack-0}
 \begin{verbatim}
 src_unpack() {
 if [[ -n ${A} ]]; then
@@ -142,23 +142,9 @@ post-unpack source preparation.
 The initial working directory is \t{S}, with an error or fallback to 
\t{WORKDIR} as discussed in
 section~\ref{sec:s-to-workdir-fallback}.
 
-\featurelabel{src-prepare-6} For EAPIs listed in 
table~\ref{tab:src-prepare-table} as using format
-6, the default implementation used when the ebuild lacks the \t{src_prepare} 
function shall behave
-as:
-
-\begin{listing}[H]
-\caption{\t{src_prepare}, format~6}
-\begin{verbatim}
-src_prepare() {
-if [[ $(declare -p PATCHES 2>/dev/null) == "declare -a"* ]]; then
-[[ -n ${PATCHES[@]} ]] && eapply "${PATCHES[@]}"
-else
-[[ -n ${PATCHES} ]] && eapply ${PATCHES}
-fi
-eapply_user
-}
-\end{verbatim}
-\end{listing}
+For EAPIs listed in table~\ref{tab:src-prepare-table} as using format~6, the 
default
+implementation used when the ebuild lacks the \t{src_prepare} function shall 
behave as in
+listing~\ref{lst:src-prepare-6}.
 
 For other EAPIs supporting \t{src_prepare}, the default implementation used 
when the ebuild lacks
 the \t{src_prepare} function is a no-op.
@@ -179,6 +165,20 @@ the \t{src_prepare} function is a no-op.
 

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

2021-05-24 Thread Ulrich Müller
commit: 3d7c969ce1310c1f04d6e16309cd60e78e298df6
Author: Ulrich Müller  gentoo  org>
AuthorDate: Mon May 17 19:30:41 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon May 24 09:24:49 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=3d7c969c

Split the econf options table because it has become too wide

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

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

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index e74f730..817b52b 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -346,23 +346,28 @@ commands once the current phase function has returned.
 \ChangeWhenAddingAnEAPI{8}
 \begin{centertable}{Extra \t{econf} arguments for EAPIs}
 \label{tab:econf-options-table}
-\begin{tabular}{}
+\begin{tabular}{l}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{1}{P{9em}}{\textbf{-{}-disable-dependency-tracking}} &
-  \multicolumn{1}{P{5em}}{\textbf{-{}-disable-silent-rules}} &
-  \multicolumn{1}{c}{\textbf{-{}-disable-static}} &
   \multicolumn{1}{c}{\textbf{-{}-datarootdir}} &
   \multicolumn{1}{c}{\textbf{-{}-docdir}} &
   \multicolumn{1}{c}{\textbf{-{}-htmldir}} &
   \multicolumn{1}{c}{\textbf{-{}-with-sysroot}} \\
   \midrule
-  0, 1, 2, 3& No  & No  & No  & No  & No  & No  & No  \\
-  4 & Yes & No  & No  & No  & No  & No  & No  \\
-  5 & Yes & Yes & No  & No  & No  & No  & No  \\
-  6 & Yes & Yes & No  & No  & Yes & Yes & No  \\
-  7 & Yes & Yes & No  & No  & Yes & Yes & Yes \\
-  8 & Yes & Yes & Yes & Yes & Yes & Yes & Yes \\
+  0, 1, 2, 3, 4, 5  & No  & No  & No  & No  \\
+  6 & No  & Yes & Yes & No  \\
+  7 & No  & Yes & Yes & Yes \\
+  8 & Yes & Yes & Yes & Yes \\
+  \midrule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{P{5.5em}}{\textbf{-{}-disable-dependency-tracking}} &
+  \multicolumn{1}{P{5em}}{\textbf{-{}-disable-silent-rules}} &
+  \multicolumn{1}{c}{\textbf{-{}-disable-static}} & \\
+  \midrule
+  0, 1, 2, 3& No  & No  & No  & \\
+  4 & Yes & No  & No  & \\
+  5, 6, 7   & Yes & Yes & No  & \\
+  8 & Yes & Yes & Yes & \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2021-05-24 Thread Ulrich Müller
commit: 2d9b9b98bc976edb2a2716eb19f3b6b793852b2a
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun May 16 18:22:15 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon May 24 09:24:49 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=2d9b9b98

EAPI 8 has dosym -r

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

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index a163a9c..ebe5ccc 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -293,6 +293,9 @@ Output commands use stdout & 
\compactfeatureref{output-no-stdout} &
 \t{domo} destination path & \compactfeatureref{domo-path} &
 \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{/usr} & 
\t{/usr} \\
 
+\t{dosym -r} & \compactfeatureref{dosym-relative} &
+No & No & No & No & Yes \\
+
 \t{new*} support stdin & \compactfeatureref{newfoo-stdin} &
 No & Yes & Yes & Yes & Yes \\
 
@@ -517,6 +520,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{hasv} and \t{hasq} banned, \featureref{banned-commands}.
 \item \t{econf} adds \t{-{}-datarootdir}, \featureref{econf-options}.
 \item \t{econf} adds \t{-{}-disable-static}, \featureref{econf-options}.
+\item \t{dosym} can create relative paths, \featureref{dosym-relative}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 817b52b..323b26d 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -599,9 +599,28 @@ the current phase function has returned.
 
 \item[dosbin] As \t{dobin}, but installs to \t{DESTTREE/sbin}.
 
-\item[dosym] Creates a symbolic link named as for its second parameter, 
pointing to the first. If
-the directory containing the new link does not exist, creates it. Failure 
behaviour is EAPI
-dependent as per section~\ref{sec:failure-behaviour}.
+\item[dosym] Creates a symbolic link named as for its second parameter, 
pointing to the first.
+If the directory containing the new link does not exist, creates it.
+
+\featurelabel{dosym-relative} In EAPIs listed in table~\ref{tab:dosym-r} 
as supporting creation
+of relative paths, when called with option \t{-r}, expands the first 
parameter relative to
+the apparent path of the directory containing the second parameter. The 
algorithm must return
+a result identical to the one returned by the function in 
listing~\ref{lst:dosym-r},
+with \t{realpath} and \t{dirname} from GNU coreutils version~8.32. 
Specifying option \t{-r}
+together with a relative path as first (target) parameter is an error.
+
+Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
+
+\begin{listing}[h]
+\caption{Create a relative path for \t{dosym -r}} \label{lst:dosym-r}
+\begin{verbatim}
+dosym_relative_path() {
+local link=$(realpath -m -s "/${2#/}")
+local linkdir=$(dirname "${link}")
+realpath -m -s --relative-to="${linkdir}" "$1"
+}
+\end{verbatim}
+\end{listing}
 
 \item[fowners] Acts as for \t{chown}, but takes paths relative to the image 
directory. Failure
 behaviour is EAPI dependent as per section~\ref{sec:failure-behaviour}.
@@ -729,6 +748,20 @@ the current phase function has returned.
 \end{tabular}
 \end{centertable}
 
+\ChangeWhenAddingAnEAPI{8}
+\begin{centertable}{EAPIs supporting \t{dosym -r}}
+\label{tab:dosym-r}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{\t{dosym} supports creation of relative 
paths?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7  & No  \\
+  8   & Yes \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \subsection{Commands affecting install destinations}
 The following commands are used to set the various destination trees and 
options used by the above
 installation commands. They must be shell functions or aliases, due to the 
need to set variables



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

2021-05-24 Thread Ulrich Müller
commit: 93132ba398a5dcb3dd7a2fd369fc38665124197b
Author: Ulrich Müller  gentoo  org>
AuthorDate: Mon May 17 15:45:42 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon May 24 09:24:49 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=93132ba3

EAPI 8: econf adds --disable-static

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

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index bc2fcbc..a163a9c 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -272,7 +272,8 @@ Output commands use stdout & 
\compactfeatureref{output-no-stdout} &
 disable dependency tracking, disable silent rules &
 disable dependency tracking, disable silent rules, docdir, htmldir &
 disable dependency tracking, disable silent rules, docdir, htmldir, with 
sysroot &
-disable dependency tracking, disable silent rules, datarootdir, docdir, 
htmldir, with sysroot \\
+disable dependency tracking, disable silent rules, disable static,
+datarootdir, docdir, htmldir, with sysroot \\
 
 \t{dodoc -r} & \compactfeatureref{dodoc} &
 * & Yes & Yes & Yes & Yes \\
@@ -515,6 +516,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{useq} banned, \featureref{banned-commands}.
 \item \t{hasv} and \t{hasq} banned, \featureref{banned-commands}.
 \item \t{econf} adds \t{-{}-datarootdir}, \featureref{econf-options}.
+\item \t{econf} adds \t{-{}-disable-static}, \featureref{econf-options}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 7909bdd..e74f730 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -338,27 +338,31 @@ commands once the current phase function has returned.
 \item \t{-{}-disable-silent-rules}, 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-silent-rules}
 occurs in the output of \t{configure -{}-help}.
+\item \t{-{}-disable-static}, if the EAPI is listed in 
table~\ref{tab:econf-options-table}
+as using it. This option will only be passed if the string 
\t{-{}-disable-static} occurs
+in the output of \t{configure -{}-help}.
 \end{itemize}
 
 \ChangeWhenAddingAnEAPI{8}
 \begin{centertable}{Extra \t{econf} arguments for EAPIs}
 \label{tab:econf-options-table}
-\begin{tabular}{lll}
+\begin{tabular}{}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{P{9em}}{\textbf{-{}-disable-dependency-tracking}} &
   \multicolumn{1}{P{5em}}{\textbf{-{}-disable-silent-rules}} &
+  \multicolumn{1}{c}{\textbf{-{}-disable-static}} &
   \multicolumn{1}{c}{\textbf{-{}-datarootdir}} &
   \multicolumn{1}{c}{\textbf{-{}-docdir}} &
   \multicolumn{1}{c}{\textbf{-{}-htmldir}} &
   \multicolumn{1}{c}{\textbf{-{}-with-sysroot}} \\
   \midrule
-  0, 1, 2, 3& No  & No  & No  & No  & No  & No  \\
-  4 & Yes & No  & No  & No  & No  & No  \\
-  5 & Yes & Yes & No  & No  & No  & No  \\
-  6 & Yes & Yes & No  & Yes & Yes & No  \\
-  7 & Yes & Yes & No  & Yes & Yes & Yes \\
-  8 & Yes & Yes & Yes & Yes & Yes & Yes \\
+  0, 1, 2, 3& No  & No  & No  & No  & No  & No  & No  \\
+  4 & Yes & No  & No  & No  & No  & No  & No  \\
+  5 & Yes & Yes & No  & No  & No  & No  & No  \\
+  6 & Yes & Yes & No  & No  & Yes & Yes & No  \\
+  7 & Yes & Yes & No  & No  & Yes & Yes & Yes \\
+  8 & Yes & Yes & Yes & Yes & Yes & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2021-05-24 Thread Ulrich Müller
commit: 247a5d9bade95d9b67fe92689003185542c06a99
Author: Michał Górny  gentoo  org>
AuthorDate: Sun Dec 22 20:32:41 2019 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon May 24 09:24:49 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=247a5d9b

EAPI 8 has install-time dependencies (IDEPEND)

Bug: https://bugs.gentoo.org/660306
Signed-off-by: Michał Górny  gentoo.org>
[Updated as discussed in -pms mailing list]
Signed-off-by: Ulrich Müller  gentoo.org>

 dependencies.tex | 25 +
 eapi-differences.tex |  4 
 ebuild-env-vars.tex  |  5 +++--
 ebuild-vars.tex  |  1 +
 eclasses.tex | 10 +-
 metadata-cache.tex   |  2 ++
 6 files changed, 32 insertions(+), 15 deletions(-)

diff --git a/dependencies.tex b/dependencies.tex
index 3ef6fa6..f14a08c 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -21,7 +21,7 @@
   \t{src_install} & \t{DEPEND}, \t{BDEPEND} \\
   \addlinespace
   \t{pkg_preinst}, \t{pkg_postinst}, \t{pkg_prerm}, \t{pkg_postrm} &
-  \t{RDEPEND} \\
+  \t{RDEPEND}, \t{IDEPEND} \\
   \addlinespace
   \t{pkg_config} & \t{RDEPEND}, \t{PDEPEND} \\
   \bottomrule
@@ -32,7 +32,7 @@
 \label{tab:dep-class-api}
 \begin{tabular}{}
   \toprule
-& \t{BDEPEND} & \t{DEPEND} & 
\t{RDEPEND}, \t{PDEPEND} \\
+   & \t{BDEPEND}, \t{IDEPEND} & \t{DEPEND} & 
\t{RDEPEND}, \t{PDEPEND} \\
   \midrule
   Binary compatible with& \t{CBUILD}  & \t{CHOST}  & 
\t{CHOST} \\
   Base unprefixed path  & \t{/}   & \t{\$\{SYSROOT\}}  & 
\t{\$\{ROOT\}}\\
@@ -82,16 +82,24 @@ as supporting \t{BDEPEND}, the build dependencies are split 
into two subclasses:
 dependency.
 \end{compactitem}
 
+\featurelabel{idepend} Additionally, in EAPIs listed in 
table~\ref{tab:depend-table} as supporting
+\t{IDEPEND}, install-time dependencies can be specified. These dependencies 
are binary compatible
+with the native build system (\t{CBUILD}). Ebuilds are allowed to call them in 
\t{pkg_preinst} and
+\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}
 \begin{centertable}{EAPIs supporting additional dependency types}
 \label{tab:depend-table}
-\begin{tabular}{ll}
+\begin{tabular}{lll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{1}{c}{\textbf{Supports \t{BDEPEND}?}} \\
+  \multicolumn{1}{c}{\textbf{Supports \t{BDEPEND}?}} &
+  \multicolumn{1}{c}{\textbf{Supports \t{IDEPEND}?}} \\
   \midrule
-  0, 1, 2, 3, 4, 5, 6 & No  \\
-  7, 8& Yes \\
+  0, 1, 2, 3, 4, 5, 6 & No  & No  \\
+  7   & Yes & No  \\
+  8   & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -111,7 +119,7 @@ be surrounded on both sides by whitespace, except at the 
start and end of the st
 
 \begin{compactitem}
 \item A package dependency specification. Permitted in \t{DEPEND}, 
\t{BDEPEND}, \t{RDEPEND},
-\t{PDEPEND}.
+\t{PDEPEND}, \t{IDEPEND}.
 \item A URI, in the form \t{proto://host/path}. Permitted in \t{HOMEPAGE} and 
\t{SRC_URI}\@.
 In EAPIs listed in table~\ref{tab:uri-arrows-table} as supporting 
\t{SRC_URI} arrows, may
 optionally be followed by whitespace, then \t{->}, then whitespace, then a 
simple filename when
@@ -129,7 +137,8 @@ be surrounded on both sides by whitespace, except at the 
start and end of the st
 followed by an open parenthesis, followed by whitespace, followed by one 
or more
 of (a dependency item of any kind followed by whitespace), followed by a 
close parenthesis.
 More formally: \t{any-of} \t{::=} \t{'||' whitespace '(' whitespace (item 
whitespace)+ ')'}.
-Permitted in \t{DEPEND}, \t{BDEPEND}, \t{RDEPEND}, \t{PDEPEND}, 
\t{LICENSE}, \t{REQUIRED_USE}.
+Permitted in \t{DEPEND}, \t{BDEPEND}, \t{RDEPEND}, \t{PDEPEND}, 
\t{IDEPEND}, \t{LICENSE},
+\t{REQUIRED_USE}.
 \item An exactly-one-of group, which has the same format as the any-of group, 
but begins with the
 string \t{\textasciicircum\textasciicircum} instead. Permitted in 
\t{REQUIRED_USE}.
 \item \featurelabel{at-most-one-of} An at-most-one-of group, which has the 
same format as the

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 22f99e2..f3af563 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -86,6 +86,9 @@ Selective URI restrictions & \compactfeatureref{uri-restrict} 
&
 \t{BDEPEND} & \compactfeatureref{bdepend} &
 No & No & No & Yes & Yes \\
 
+\t{IDEPEND} & \compactfeatureref{idepend} &
+No & No & No & No & Yes \\
+
 \t{??\ ( )} groups & \compactfeatureref{at-most-one-of} &
 No & Yes & Yes & Yes & Yes \\
 
@@ -490,6 +493,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item Less 

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

2021-05-24 Thread Ulrich Müller
commit: b78e112d89d5651d8ce897c6537bcd8e7718c94a
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun May 16 18:46:09 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon May 24 09:24:49 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=b78e112d

EAPI 8 accumulates PROPERTIES and RESTRICT across eclasses

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

 eapi-differences.tex |  4 
 eclasses.tex | 27 ++-
 2 files changed, 26 insertions(+), 5 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index cb2d26e..6e0ceeb 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -152,6 +152,9 @@ Parallel tests & \compactfeatureref{parallel-tests} &
 \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
 \t{src_compile}, \t{src_test}, \t{src_install} \\
 
+Accumulate \t{RESTRICT} etc. & \compactfeatureref{accumulate-vars} &
+No & No & No & No & Yes \\
+
 \t{AA} & \compactfeatureref{aa} &
 * & No & No & No & No \\
 
@@ -499,6 +502,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{IDEPEND}, \featureref{idepend}.
 \item Empty default working directory in phase functions, 
\featureref{phase-function-dir}.
 \item Different \t{src_prepare} implementation, \featureref{src-prepare}.
+\item \t{PROPERTIES}, \t{RESTRICT} accumulated across eclasses, 
\featureref{accumulate-vars}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/eclasses.tex b/eclasses.tex
index 7f4ba67..a92ce1f 100644
--- a/eclasses.tex
+++ b/eclasses.tex
@@ -34,11 +34,28 @@ The \t{inherit} command must also ensure that:
 
 \section{Eclass-defined Metadata Keys}
 
-The \t{IUSE}, \t{REQUIRED_USE}, \t{DEPEND}, \t{BDEPEND}, \t{RDEPEND}, 
\t{PDEPEND} and \t{IDEPEND}
-variables are handled specially when set by an eclass. They must be 
accumulated across eclasses,
-appending the value set by each eclass to the resulting value after the 
previous one is loaded.
-Then the eclass-defined value is appended to that defined by the ebuild. In 
the case of \t{RDEPEND},
-this is done after the implicit \t{RDEPEND} rules in 
section~\ref{sec:rdepend-depend} are applied.
+\featurelabel{accumulate-vars} The \t{IUSE}, \t{REQUIRED_USE}, \t{DEPEND}, 
\t{BDEPEND}, \t{RDEPEND},
+\t{PDEPEND} and \t{IDEPEND} variables are handled specially when set by an 
eclass. They must be
+accumulated across eclasses, appending the value set by each eclass to the 
resulting value after
+the previous one is loaded. For EAPIs listed in 
table~\ref{tab:accumulate-vars} as accumulating
+\t{PROPERTIES} and \t{RESTRICT}, the same is true for these variables. Then 
the eclass-defined
+value is appended to that defined by the ebuild. In the case of \t{RDEPEND}, 
this is done after
+the implicit \t{RDEPEND} rules in section~\ref{sec:rdepend-depend} are applied.
+
+\ChangeWhenAddingAnEAPI{8}
+\begin{centertable}{EAPIs accumulating \t{PROPERTIES} and \t{RESTRICT} across 
eclasses}
+\label{tab:accumulate-vars}
+\begin{tabular}{lll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Accumulates \t{PROPERTIES}?}} &
+  \multicolumn{1}{c}{\textbf{Accumulates \t{RESTRICT}?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7  & No  & No  \\
+  8   & Yes & Yes \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
 
 \section{EXPORT_FUNCTIONS}
 



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

2021-05-24 Thread Ulrich Müller
commit: 809c355ee7a419319986140a629598d8fb7de375
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun May 16 12:05:17 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon May 24 09:24:49 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=809c355e

EAPI 8: useq, hasv and hasq are banned

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

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 6e0ceeb..e10f519 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -236,6 +236,15 @@ Most utilities die & \compactfeatureref{die-on-failure} &
 \t{libopts} & \compactfeatureref{banned-commands} &
 Yes & Yes & Yes & Banned & Banned \\
 
+\t{useq} & \compactfeatureref{banned-commands} &
+Yes & Yes & Yes & Yes & Banned \\
+
+\t{hasv} & \compactfeatureref{banned-commands} &
+Yes & Yes & Yes & Yes & Banned \\
+
+\t{hasq} & \compactfeatureref{banned-commands} &
+Yes & Yes & Yes & Yes & Banned \\
+
 Query command options & \compactfeatureref{pm-query-options} &
 None & \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} &
 \t{-b}, \t{-d}, \t{-r} \\
@@ -503,6 +512,8 @@ EAPI 8 is EAPI 7 with the following changes:
 \item Empty default working directory in phase functions, 
\featureref{phase-function-dir}.
 \item Different \t{src_prepare} implementation, \featureref{src-prepare}.
 \item \t{PROPERTIES}, \t{RESTRICT} accumulated across eclasses, 
\featureref{accumulate-vars}.
+\item \t{useq} banned, \featureref{banned-commands}.
+\item \t{hasv} and \t{hasq} banned, \featureref{banned-commands}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 71d1e89..c56e592 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -73,6 +73,16 @@ called, the package manager must abort the build process 
indicating an error.
   4, 5  & Yes & Yes & No  & No  & No  & No  \\
   6 & Yes & Yes & Yes & No  & No  & No  \\
   7, 8  & Yes & Yes & Yes & Yes & Yes & Yes \\
+  \midrule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{6}{c}{\textbf{Command banned?}} \\
+  \multicolumn{1}{c}{} &
+  \multicolumn{1}{c}{\textbf{\t{useq}}} &
+  \multicolumn{1}{c}{\textbf{\t{hasv}}} &
+  \multicolumn{1}{c}{\textbf{\t{hasq}}} & & & \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7  & No  & No  & No  & & & \\
+  8   & Yes & Yes & Yes & & & \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -842,6 +852,8 @@ table~\ref{tab:use-list-strictness}.
 \item[usev] The same as \t{use}, but also prints the flag name if the condition
 is met.
 \item[useq] Deprecated synonym for \t{use}.
+In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as per
+section~\ref{sec:banned-commands}.
 \item[use_with] \featurelabel{use-with} Has one-, two-, and three-argument 
forms. The first
 argument is a USE flag name, the second a \t{configure} option name 
(\t{\$\{opt\}}), defaulting
 to the same as the first argument if not provided, and the third is a 
string value
@@ -916,7 +928,11 @@ These functions check whitespace-separated lists for a 
particular value.
 \item[has] Returns shell true (0) if the first argument (a word) is found in 
the list of subsequent
 arguments, false otherwise. Guaranteed quiet.
 \item[hasv] The same as \t{has}, but also prints the first argument if found.
+In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as per
+section~\ref{sec:banned-commands}.
 \item[hasq] Deprecated synonym for \t{has}.
+In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as per
+section~\ref{sec:banned-commands}.
 \end{description}
 
 \subsection{Version manipulation and comparison commands}



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

2021-05-24 Thread Ulrich Müller
commit: 73b0566d6e0a18a8254209e1e650b1b3e55082aa
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun May 23 09:45:56 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon May 24 09:24:49 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=73b0566d

EAPI 8 has empty initial working directories in phase functions

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

 eapi-differences.tex |  4 
 ebuild-functions.tex | 26 +-
 2 files changed, 25 insertions(+), 5 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index f3af563..2c1073a 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -111,6 +111,9 @@ Use dependencies & \compactfeatureref{use-deps} &
 \t{!!}\ blockers & \compactfeatureref{bang-strength} &
 * & Strong & Strong & Strong & Strong \\
 
+Working directory in functions & \compactfeatureref{phase-function-dir} &
+Any & Any & Any & Any & Empty \\
+
 \t{S} to \t{WORKDIR} fallback & \compactfeatureref{s-workdir-fallback} &
 * & Conditional & Conditional & Conditional & Conditional \\
 
@@ -494,6 +497,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item Bash version is 5.0, \featureref{bash-version}.
 \item Selective fetch/mirror restriction, \featureref{uri-restrict}.
 \item \t{IDEPEND}, \featureref{idepend}.
+\item Empty default working directory in phase functions, 
\featureref{phase-function-dir}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/ebuild-functions.tex b/ebuild-functions.tex
index ffdea16..44b8b43 100644
--- a/ebuild-functions.tex
+++ b/ebuild-functions.tex
@@ -22,11 +22,13 @@ Ebuilds must not call nor assume the existence of any phase 
functions.
 \subsection{Initial working directories}
 \label{sec:s-to-workdir-fallback}
 
-Some functions may assume that their initial working directory is set to a 
particular location;
-these are noted below. If no initial working directory is mandated, it may be 
set to anything and
-the ebuild must not rely upon a particular location for it. The ebuild 
\emph{may} assume that the
-initial working directory for any phase is a trusted location that may only be 
written to by a
-privileged user and group.
+\featurelabel{phase-function-dir} Some functions may assume that their initial 
working directory is
+set to a particular location; these are noted below. If no initial working 
directory is mandated,
+then for EAPIs listed in table~\ref{tab:function-dirs} as having an empty 
directory, it must be set
+to a dedicated directory that is empty at the start of the function and may be 
read-only. For other
+EAPIs, it may be set to anything. The ebuild must not rely upon a particular 
location for it.
+The ebuild \emph{may} assume that the initial working directory for any phase 
is a trusted location
+that may only be written to by a privileged user and group.
 
 \featurelabel{s-workdir-fallback} Some functions are described as having an 
initial working
 directory of \t{S} with an error or fallback to \t{WORKDIR}\@. For EAPIs 
listed in
@@ -44,6 +46,20 @@ fallback to \t{WORKDIR} is used:
 executed, are in \t{DEFINED_PHASES}.
 \end{compactitem}
 
+\ChangeWhenAddingAnEAPI{8}
+\begin{centertable}{Default initial working directory in phase functions for 
EAPIs}
+\label{tab:function-dirs}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Working dir?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6, 7  & Any   \\
+  8   & Empty \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \ChangeWhenAddingAnEAPI{8}
 \begin{centertable}{EAPIs with \t{S} to \t{WORKDIR} fallbacks}
 \label{tab:s-fallback-table}



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

2021-05-24 Thread Ulrich Müller
commit: 45db43981669a05be0c0f79cb0a2506ec5aee735
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun May 16 19:06:02 2021 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon May 24 09:24:49 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=45db4398

EAPI 8: Default src_prepare doesn't accept options in PATCHES

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

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 1174052..cb2d26e 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -124,7 +124,7 @@ Working directory in functions & 
\compactfeatureref{phase-function-dir} &
 * & Yes & Yes & Yes & Yes \\
 
 \t{src_prepare} style & \compactfeatureref{src-prepare} &
-* & no-op & 6 & 6 & 6 \\
+* & no-op & 6 & 6 & 8 \\
 
 \t{src_configure} & \compactfeatureref{src-configure} &
 * & Yes & Yes & Yes & Yes \\
@@ -498,6 +498,7 @@ EAPI 8 is EAPI 7 with the following changes:
 \item Selective fetch/mirror restriction, \featureref{uri-restrict}.
 \item \t{IDEPEND}, \featureref{idepend}.
 \item Empty default working directory in phase functions, 
\featureref{phase-function-dir}.
+\item Different \t{src_prepare} implementation, \featureref{src-prepare}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/ebuild-functions.tex b/ebuild-functions.tex
index 1bfa957..0cf8b4b 100644
--- a/ebuild-functions.tex
+++ b/ebuild-functions.tex
@@ -142,9 +142,9 @@ post-unpack source preparation.
 The initial working directory is \t{S}, with an error or fallback to 
\t{WORKDIR} as discussed in
 section~\ref{sec:s-to-workdir-fallback}.
 
-For EAPIs listed in table~\ref{tab:src-prepare-table} as using format~6, the 
default
+For EAPIs listed in table~\ref{tab:src-prepare-table} as using format 6 or~8, 
the default
 implementation used when the ebuild lacks the \t{src_prepare} function shall 
behave as in
-listing~\ref{lst:src-prepare-6}.
+listing~\ref{lst:src-prepare-6} or listing~\ref{lst:src-prepare-8}, 
respectively.
 
 For other EAPIs supporting \t{src_prepare}, the default implementation used 
when the ebuild lacks
 the \t{src_prepare} function is a no-op.
@@ -160,7 +160,8 @@ the \t{src_prepare} function is a no-op.
   \midrule
   0, 1  & No  & Not applicable \\
   2, 3, 4, 5& Yes & no-op  \\
-  6, 7, 8   & Yes & 6  \\
+  6, 7  & Yes & 6  \\
+  8 & Yes & 8  \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -179,6 +180,20 @@ src_prepare() {
 \end{verbatim}
 \end{listing}
 
+\begin{listing}[H]
+\caption{\t{src_prepare}, format~8} \label{lst:src-prepare-8}
+\begin{verbatim}
+src_prepare() {
+if [[ $(declare -p PATCHES 2>/dev/null) == "declare -a"* ]]; then
+[[ -n ${PATCHES[@]} ]] && eapply -- "${PATCHES[@]}"
+else
+[[ -n ${PATCHES} ]] && eapply -- ${PATCHES}
+fi
+eapply_user
+}
+\end{verbatim}
+\end{listing}
+
 \subsection{src_configure}
 
 \featurelabel{src-configure} The \t{src_configure} function is only called for 
EAPIs listed in



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

2021-05-24 Thread Ulrich Müller
commit: 8cb0536dea998be6fcb73d09484713ae8202ad4e
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun Nov  5 18:04:28 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon May 24 09:24:49 2021 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=8cb0536d

EAPI 8: Bash version is 5.0

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

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index b89ede0..a334881 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -57,7 +57,7 @@ Stable use masking/forcing & \compactfeatureref{stablemask} &
 No & Yes & Yes & Yes & Yes \\
 
 Bash version & \compactfeatureref{bash-version} &
-3.2 & 3.2 & 4.2 & 4.2 & 4.2 \\
+3.2 & 3.2 & 4.2 & 4.2 & 5.0 \\
 
 \t{failglob} in global scope & \compactfeatureref{failglob} &
 No & No & Yes & Yes & Yes \\
@@ -485,6 +485,7 @@ EAPI 8 is EAPI 7 with the following changes:
 
 \begin{compactitem}
 \item Less strict naming rules for files in \t{updates} directory, 
\featureref{updates-filenames}.
+\item Bash version is 5.0, \featureref{bash-version}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/ebuild-format.tex b/ebuild-format.tex
index c2224bf..4929ba4 100644
--- a/ebuild-format.tex
+++ b/ebuild-format.tex
@@ -26,7 +26,8 @@ output or standard error, or modify the state of the system 
in any way.
   \multicolumn{1}{c}{\textbf{\t{failglob} in global scope?}} \\
   \midrule
   0, 1, 2, 3, 4, 5  & 3.2 & No  \\
-  6, 7, 8   & 4.2 & Yes \\
+  6, 7  & 4.2 & Yes \\
+  8 & 5.0 & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



  1   2   3   >