commit:     e9e9a1167def7ca65e2dfc7c1f255701d3c7737f
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sun Dec 22 20:32:41 2019 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Tue May 25 19:56:56 2021 +0000
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 <mgorny <AT> gentoo.org>
[Updated as discussed in -pms mailing list]
Signed-off-by: Ulrich Müller <ulm <AT> 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}{llll}
       \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 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}.
+\item \t{IDEPEND}, \featureref{idepend}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 2e562d6..ddea935 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -148,8 +148,9 @@ variable.
     Ditto &
     No &
     \featurelabel{broot} The absolute path to the root directory containing 
build dependencies
-    satisfied by \t{BDEPEND}, typically executable build tools. This includes 
any applicable offset
-    prefix. Only for EAPIs listed in table~\ref{tab:offset-env-vars-table} as 
supporting \t{BROOT}.
+    satisfied by \t{BDEPEND} and \t{IDEPEND}, typically executable build 
tools. This includes any
+    applicable offset prefix. Only for EAPIs listed in 
table~\ref{tab:offset-env-vars-table} as
+    supporting \t{BROOT}.
     \\
 \t{T} &
     All &

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index f6b1c26..d07cca4 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -86,6 +86,7 @@ Ebuilds may define any of the following variables:
     for its value if unset and when used with an eclass. See 
section~\ref{sec:rdepend-depend} for
     details.
 \item[PDEPEND] See chapter~\ref{ch:dependencies}.
+\item[IDEPEND] See chapter~\ref{ch:dependencies}.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{8}

diff --git a/eclasses.tex b/eclasses.tex
index bf0007b..7f4ba67 100644
--- a/eclasses.tex
+++ b/eclasses.tex
@@ -34,11 +34,11 @@ 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} and 
\t{PDEPEND} 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.
+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.
 
 \section{EXPORT_FUNCTIONS}
 

diff --git a/metadata-cache.tex b/metadata-cache.tex
index 33574c4..d69ecdd 100644
--- a/metadata-cache.tex
+++ b/metadata-cache.tex
@@ -36,6 +36,8 @@ order. Other lines may be present following these; their 
meanings are not define
     metadata; see table~\ref{tab:optional-vars-table}.
 \item Defined phases (\t{DEFINED_PHASES}). In some EAPIs, may optionally be 
blank, regardless of
     ebuild metadata; see table~\ref{tab:defined-phases-table}.
+\item Install-time dependencies (\t{IDEPEND}).
+    Blank in some EAPIs; see table~\ref{tab:depend-table}.
 \item Blank lines to pad the file to 22 lines long
 \end{compactenum}
 

Reply via email to