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

2018-04-30 Thread Ulrich Müller
commit: 5933101e2c7c388165608760febdb4fb442b7f71
Author: Ulrich Müller  gentoo  org>
AuthorDate: Mon Apr 30 22:13:04 2018 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Apr 30 22:13:04 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=5933101e

EAPI 7 has been approved by the Council.

Bug: https://bugs.gentoo.org/654262

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

diff --git a/eapi-cheatsheet.tex b/eapi-cheatsheet.tex
index 7095705..2dc8fcd 100644
--- a/eapi-cheatsheet.tex
+++ b/eapi-cheatsheet.tex
@@ -402,7 +402,7 @@ differences between these previous EAPIs.
 See \featureref{banned-commands}.
 \end{description}
 
-\section{EAPI 7}
+\section{EAPI 7 (2018-04-30)}
 \label{sec:cs:eapi7}
 \subsection{Additions/Changes}
 \label{sec:cs:eapi7-additions}



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

2018-04-26 Thread Ulrich Müller
commit: 49fa11cf4db1d10f311ff738531e5477cfeb4dbc
Author: Ulrich Müller  gentoo  org>
AuthorDate: Wed Apr 25 17:10:23 2018 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Thu Apr 26 04:59:26 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=49fa11cf

Cheat sheet: Update for EAPI 7.

 eapi-cheatsheet.tex | 118 +++-
 1 file changed, 117 insertions(+), 1 deletion(-)

diff --git a/eapi-cheatsheet.tex b/eapi-cheatsheet.tex
index cce3218..7095705 100644
--- a/eapi-cheatsheet.tex
+++ b/eapi-cheatsheet.tex
@@ -14,7 +14,7 @@
 \usepackage[nohyphen]{underscore}
 \newcommand{\code}[1]{\texttt{#1}}
 % This should reflect the latest approved EAPI version
-\newcommand{\version}{6.0}
+\newcommand{\version}{7.0}
 \newcommand{\featureref}[1]{\textsc{#1} on page~\pageref{feat:#1}}
 \renewcommand{\familydefault}{\sfdefault}
 \urlstyle{sf}
@@ -401,6 +401,122 @@ differences between these previous EAPIs.
 as replacement.
 See \featureref{banned-commands}.
 \end{description}
+
+\section{EAPI 7}
+\label{sec:cs:eapi7}
+\subsection{Additions/Changes}
+\label{sec:cs:eapi7-additions}
+\begin{description}
+\item[\code{package.*} and \code{use.*}] These profile files can
+be directories instead of regular files. This is intended to be
+used in overlays only.
+See \featureref{package-mask-dir} and \featureref{profile-file-dirs}.
+\item[\code{||} and \code{\textasciicircum\textasciicircum}
+dependency groups] These groups now evaluate to false when they
+are empty (for example, if there are only unmatched use
+dependencies inside of them).
+See \featureref{empty-dep-groups}.
+\item[No trailing slash] The paths specified by \code{ROOT},
+\code{EROOT}, \code{D}, and \code{ED} no longer end with a slash.
+Thus, default \code{ROOT} is empty now.
+See \featureref{trailing-slash}.
+\item[Cross compilation support] Several variables have been added
+and some commands have been extended for better cross compilation
+support:
+\begin{description}
+\item[\code{BDEPEND}] Build dependencies are divided into two
+classes: \code{BDEPEND} for native build tools (\code{CBUILD});
+\code{DEPEND} for dependencies compatible with the system
+being built (\code{CHOST}).
+See \featureref{bdepend}.
+\item[\code{SYSROOT}] The path to the root directory for
+\code{DEPEND} type dependencies.
+See \featureref{sysroot}.
+\item[\code{ESYSROOT}] The concatenation of the \code{SYSROOT}
+and \code{EPREFIX} paths, for convenience.
+\item[\code{BROOT}] The prefixed root directory path for
+\code{BDEPEND} type dependencies, typically executable build
+tools.
+See \featureref{broot}.
+\item[\code{econf}]
+Option \code{-{}-with-sysroot=\$\{ESYSROOT\}} is passed to
+configure, if this option is supported.
+See \featureref{econf-options}.
+\item[\code{has_version} and \code{best_version}] These
+helpers support \code{-b}, \code{-d} or \code{-r} options,
+causing the query to apply to \code{BDEPEND}, \code{DEPEND}
+or \code{RDEPEND} (the default). This replaces the
+\code{-{}-host-root} option.
+See \featureref{pm-query-options}.
+\end{description}
+\item[Environment blacklist] Any environment variable listed in
+the profile-defined \code{ENV_UNSET} variable will be unset by the
+package manager.
+See \featureref{env-unset}.
+\item[\code{patch}] All inputs valid for GNU patch version 2.7
+are supported. Especially, this includes support for git-formatted
+patches.
+See \featureref{gnu-patch}.
+\item[\code{nonfatal}] In addition to its definition as a shell
+function, the \code{nonfatal} wrapper has now a fallback
+implementation as an external command. Thus, it can be called
+from other commands.
+See \featureref{nonfatal}.
+\item[Output commands] \code{einfo} and friends no longer use
+stdout, so inside of command substitution their output won't be
+caught.
+See \featureref{output-no-stdout}.
+\item[\code{eqawarn}] The \code{eqawarn} output command is
+supported in the package manager itself.
+See \featureref{eqawarn}.
+\item[\code{die} in subshell] The \code{die} command is guaranteed
+to work in a subshell context.
+See \featureref{subshell-die}.
+\item[\code{domo} destination] \code{domo} installs the specified
+files under \code{/usr/share/locale} instead of
+\code{\$\{DESTTREE\}/\allowbreak share/locale}.
+See \featureref{domo-path}.
+\item[Controllable stripping] The \code{dostrip -x} command can be
+used to add paths to an exclusion list for stripping of debug
+symbols, to allow more fine-grained control than with
+\code{RESTRICT="strip"}.
+See \featureref{dostrip}.
+\item[Version 

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

2018-04-26 Thread Ulrich Müller
commit: 4ff018d6b84566535ae4c218fb02397a7a0ccf2b
Author: Ulrich Müller  gentoo  org>
AuthorDate: Thu Apr  5 16:54:30 2018 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Thu Apr  5 16:54:30 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=4ff018d6

Cheat sheet: Remove EAPIs 3 and 4 to make room for EAPI 7.

 eapi-cheatsheet.tex | 202 ++--
 1 file changed, 101 insertions(+), 101 deletions(-)

diff --git a/eapi-cheatsheet.tex b/eapi-cheatsheet.tex
index 14ca8ca..cce3218 100644
--- a/eapi-cheatsheet.tex
+++ b/eapi-cheatsheet.tex
@@ -76,7 +76,7 @@
 \footnote{\url{http://creativecommons.org/licenses/by-sa/3.0/}}
 \end{abstract}
 
-\section{EAPIs 0, 1, and 2}
+\section{EAPIs 0, 1, 2, 3, and 4}
 \label{sec:cs:eapi0-2}
 Omitted for lack of space. See version~5.0 of this document for
 differences between these previous EAPIs.
@@ -154,107 +154,107 @@ differences between these previous EAPIs.
 % \code{-i18n} switch with EAPI 4.  See \featureref{doman-langs}.
 % \end{description}
 
-\section{EAPI 3 (2010-01-18)}
-\label{sec:cs:eapi3}
-\subsection{Additions/Changes}
-\label{sec:cs:eapi3-additions}
-\begin{description}
-\item[Support for \code{.xz}] Unpack of \code{.xz} and
-\code{.tar.xz} files is possible without any custom
-\code{src_unpack} functions.  See \featureref{unpack-extensions}.
-\item[Offset prefix] Supporting installation on Prefix-enabled
-systems will be easier with this EAPI.
-\end{description}
+% \section{EAPI 3 (2010-01-18)}
+% \label{sec:cs:eapi3}
+% \subsection{Additions/Changes}
+% \label{sec:cs:eapi3-additions}
+% \begin{description}
+% \item[Support for \code{.xz}] Unpack of \code{.xz} and
+% \code{.tar.xz} files is possible without any custom
+% \code{src_unpack} functions.  See \featureref{unpack-extensions}.
+% \item[Offset prefix] Supporting installation on Prefix-enabled
+% systems will be easier with this EAPI.
+% \end{description}
 
-\section{EAPI 4 (2011-01-17)}
-\label{sec:cs:eapi4}
-\subsection{Additions/Changes}
-\label{sec:cs:eapi4-additions}
-\begin{description}
-\item[\code{pkg_pretend}] Some useful checks (kernel options for
-example) can be placed in this new phase to inform the user early
-(when just pretending to emerge the package).  Most checks should
-usually be repeated in \code{pkg_setup}.
-See \featureref{pkg-pretend}.
-\item[\code{src_install}] The \code{src_install} phase is no
-longer empty but has a default now.  This comes along with an
-accompanying \code{default} function.
-See \featureref{src-install-4}.
-\item[\code{pkg_info} on non-installed packages] The
-\code{pkg_info} phase can be called even for non-installed
-packages.  Be warned that dependencies might not have been
-installed at execution time.  See \featureref{pkg-info}.
-\item[\code{econf} changes] The helper function now always
-activates \code{-{}-disable-dependency-tracking}.
-See \featureref{econf-options}.
-\item[USE dependency defaults] In addition to the features offered
-in EAPI 2 for USE dependencies, a \code{(+)} or \code{(-)} can be
-added after a USE flag (mind the parentheses).  The former
-specifies that flags not in IUSE should be treated as enabled; the
-latter, disabled. Cannot be used with USE_EXPAND flags.  This
-mimics parts of the behaviour of \code{-{}-missing} in
-\code{built_with_use}.  See \featureref{use-dep-defaults}.
-\item[Controllable compression] All items in the \code{doc},
-\code{info}, \code{man} subdirectories of \code{/usr/share/} may
-be compressed on-disk after \code{src_install}, except for
-\code{/usr/share/doc/\$\{PF\}/html}.  \code{docompress path \dots}
-adds paths to the inclusion list for compression.
-\code{docompress -x path \dots} adds paths to the exclusion list.
-See \featureref{docompress}.
-\item[\code{nonfatal} for commands] If you call \code{nonfatal}
-the command given as argument will not abort the build process in
-case of a failure (as is the default) but will return non-zero on
-failure.
-See \featureref{nonfatal}.
-\item[\code{dodoc} recursion] If the \code{-r} switch is given as
-first argument and followed by directories, files from there are
-installed recursively.  See \featureref{dodoc}.
-\item[\code{doins} symlink support] Symbolic links are now
-properly installed when using recursion (\code{-r} switch).
-See \featureref{doins}.
-\item[\code{PROPERTIES}] Is mandatory for all package managers now
-to support interactive installs.
-\item[\code{REQUIRED_USE}] This variable can be used similar to
-the \code{(R|P)DEPEND} variables and define sets of USE flag
-combinations that are not allowed.  All elements can be further
-nested to achieve more functionality.
-\begin{description}
-\item[Illegal combination] 

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

2018-04-26 Thread Ulrich Müller
commit: 826ff37e9f2d1f6b9808e8eccfbf87d3b0509e12
Author: Ulrich Müller  gentoo  org>
AuthorDate: Thu Apr  5 16:53:09 2018 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Thu Apr  5 16:53:09 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=826ff37e

Cheat sheet: Fix undefined reference.

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

diff --git a/eapi-cheatsheet.tex b/eapi-cheatsheet.tex
index 6833c79..14ca8ca 100644
--- a/eapi-cheatsheet.tex
+++ b/eapi-cheatsheet.tex
@@ -297,7 +297,7 @@ differences between these previous EAPIs.
 \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{host-root-option}.
+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]}



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

2018-04-05 Thread Ulrich Müller
commit: fc07858c8ea68705d46be53783813ab726b27703
Author: Ulrich Müller  gentoo  org>
AuthorDate: Tue Nov  7 17:21:09 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Thu Apr  5 16:48:17 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=fc07858c

Add chewi to acknowledgements.

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

diff --git a/introduction.tex b/introduction.tex
index 5990f86..afbe708 100644
--- a/introduction.tex
+++ b/introduction.tex
@@ -62,9 +62,10 @@ applicable to tools or other applications that interact with 
ebuilds or ebuild r
 Thanks to Mike Kelly (package manager provided utilities, 
section~\ref{sec:pkg-mgr-commands}),
 Danny van Dyk (ebuild functions, section~\ref{sec:ebuild-functions}), David 
Leverton (various
 sections), Petteri Räty (environment state, 
section~\ref{sec:ebuild-env-state}), Michał Górny
-(various sections), Andreas K. Hüttel (stable use masking, 
section~\ref{sec:use-masking}) and
-Zac Medico (sub-slots, section~\ref{sec:mandatory-vars}) for contributions. 
Thanks also to
-Mike Frysinger and Brian Harring for proof-reading and suggestions for fixes 
and/or clarification.
+(various sections), Andreas K. Hüttel (stable use masking, 
section~\ref{sec:use-masking}),
+Zac Medico (sub-slots, section~\ref{sec:mandatory-vars}) and James Le Cuirot 
(build dependencies,
+section~\ref{sec:ebuild-env-vars}) for contributions. Thanks also to Mike 
Frysinger and
+Brian Harring for proof-reading and suggestions for fixes and/or clarification.
 
 % vim: set filetype=tex fileencoding=utf8 et tw=100 spell spelllang=en :
 



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

2018-04-05 Thread Ulrich Müller
commit: 508ee860a3bf03ed903f5987a9e48fd7bb6c3a01
Author: Ulrich Müller  gentoo  org>
AuthorDate: Tue Oct 31 18:19:03 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Thu Apr  5 16:48:17 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=508ee860

Trim the width of several tables.

tab:added-env-vars-table was too wide, which is fixed by reducing
the width of the paragraph type columns.

tab:econf-options-table: Change columns with overlong headers to
paragraph type, in order to allow line breaks.

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

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 526f8e3..f84263d 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -268,10 +268,10 @@ variable.
 \begin{tabular}{lll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{1}{c}{\textbf{\t{MERGE_TYPE}?}} &
-  \multicolumn{1}{P{6em}}{\textbf{\t{REPLACING_VERSIONS}?}} &
-  \multicolumn{1}{P{6em}}{\textbf{\t{REPLACED_BY_VERSION}?}} &
-  \multicolumn{1}{P{6em}}{\textbf{\t{EBUILD_PHASE_FUNC}?}} &
+  \multicolumn{1}{P{3.25em}}{\textbf{\t{MERGE_TYPE}?}} &
+  \multicolumn{1}{P{5.25em}}{\textbf{\t{REPLACING_VERSIONS}?}} &
+  \multicolumn{1}{P{5.75em}}{\textbf{\t{REPLACED_BY_VERSION}?}} &
+  \multicolumn{1}{P{5.75em}}{\textbf{\t{EBUILD_PHASE_FUNC}?}} &
   \multicolumn{1}{c}{\textbf{\t{SYSROOT}?}} &
   \multicolumn{1}{c}{\textbf{\t{BROOT}?}} \\
   \midrule

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 09515ef..506673b 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -332,8 +332,8 @@ current phase function has returned.
 \begin{tabular}{ll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{1}{c}{\textbf{-{}-disable-dependency-tracking}} &
-  \multicolumn{1}{c}{\textbf{-{}-disable-silent-rules}} &
+  \multicolumn{1}{P{9em}}{\textbf{-{}-disable-dependency-tracking}} &
+  \multicolumn{1}{P{5em}}{\textbf{-{}-disable-silent-rules}} &
   \multicolumn{1}{c}{\textbf{-{}-docdir}} &
   \multicolumn{1}{c}{\textbf{-{}-htmldir}} &
   \multicolumn{1}{c}{\textbf{-{}-with-sysroot}} \\



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

2018-04-05 Thread Ulrich Müller
commit: c9c5a2f0cf7671d73a78a544d28c361ecd5a2b3c
Author: Michał Górny  gentoo  org>
AuthorDate: Wed Sep 27 21:23:22 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Thu Apr  5 16:48:17 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=c9c5a2f0

EAPI 7 has version manipulation and comparison functions

Bug: https://bugs.gentoo.org/482170

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index a203f89..a626b74 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -290,6 +290,9 @@ Controllable stripping & \compactfeatureref{dostrip} &
 \t{in_iuse} & \compactfeatureref{in-iuse} &
 No & No & No & Yes & Yes \\
 
+\t{ver_*} commands & \compactfeatureref{ver-commands} &
+No & No & No & No & Yes \\
+
 \t{unpack} absolute paths & \compactfeatureref{unpack-absolute} &
 No & No & No & Yes & Yes \\
 
@@ -468,6 +471,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{die} is guaranteed to work in a subshell, \featureref{subshell-die}.
 \item \t{domo} installs to \t{/usr}, \featureref{domo-path}.
 \item Controllable stripping and \t{dostrip}, \featureref{dostrip}.
+\item Version manipulation and comparison commands, \featureref{ver-commands}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index f84f13d..09515ef 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -922,6 +922,86 @@ These functions check whitespace-separated lists for a 
particular value.
 \item[hasq] Deprecated synonym for \t{has}.
 \end{description}
 
+\subsection{Version manipulation and comparison commands}
+\featurelabel{ver-commands}
+These commands provide utilities for working with version strings. Their 
availability per EAPI is
+listed in table~\ref{tab:version-commands}.
+
+For the purpose of version manipulation commands, the specification provides a 
method for splitting
+an arbitrary version string (not necessarily conforming to 
section~\ref{sec:version-spec}) into
+a series of version components and version separators.
+
+A version component consists either purely of digits (\t{[0-9]+}) or purely of 
uppercase and
+lowercase ASCII letters (\t{[A-Za-z]+}). A version separator is either a 
string of any other
+characters (\t{[\textasciicircum A-Za-z0-9]}) or it occurs at the transition 
between a sequence
+of digits and a sequence of letters, or vice versa. In the latter case, the 
version separator is
+an empty string.
+
+The version string is processed left-to-right, with the successive version 
components being assigned
+successive indices starting with 1. The separator following a version 
component is assigned
+the index of the preceding version component. If the first version component 
is preceded by
+a non-empty string of version separator characters, this separator is assigned 
the index 0.
+
+The version components are presumed present if not empty. The version 
separators between version
+components are always presumed present, even if they are empty. The version 
separators preceding
+the first version component and following the last are only presumed present 
if they are not empty.
+
+Whenever the commands support ranges, the range is specified as an unsigned 
integer, optionally
+followed by a hyphen (\t{-}), which in turn is optionally followed by another 
unsigned integer.
+
+A single integer specifies a single component or separator index. An integer 
followed by a hyphen
+specifies all components or separators starting with the one at the specified 
index. Two integers
+separated by a hyphen specify a range of versions starting at the index 
specified by the first
+and ending at the second, inclusively.
+
+\begin{description}
+\item[ver_cut] Takes a range as the first argument, and optionally a version 
string as the second.
+Prints a substring of the version string starting at the version component 
specified as start
+of the range and ending at the version component specified as end of the 
range. If the version
+string is not specified, \t{\$\{PVR\}} is used.
+
+If the range spans outside the present version components, the missing 
components and separators
+are presumed empty. In particular, the range starting at zero includes the 
zeroth version
+separator if present, and the range spanning past the last version 
component includes the suffix
+following it if present. A range that does not intersect with any present 
version components
+yields an empty string.
+
+\item[ver_rs] Takes one or more pairs of arguments, optionally followed by a 
version string.
+Every argument pair specifies a range and a replacement string. Prints a 
version string after
+performing the specified separator substitutions. If the version string is 
not specified,
+\t{\$\{PVR\}} is used.
+
+For 

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

2018-03-09 Thread Ulrich Müller
commit: 42ee1314dd89baf5a7323e2f763c4e26d1fe99aa
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sat Mar  3 13:02:22 2018 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Mar  3 13:02:22 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=42ee1314

EAPI 7: DESTTREE and INSDESTTREE retained as conceptual variables.

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

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



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

2018-02-24 Thread Ulrich Müller
commit: 08a0e2b36761cf63e4a5a77f27c026b4dab9789b
Author: Michał Górny  gentoo  org>
AuthorDate: Thu Sep 28 14:05:38 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Feb 24 12:55:24 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=08a0e2b3

EAPI 7 has eqawarn

Bug: https://bugs.gentoo.org/482884

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index d7153a8..97ca9ad 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -239,6 +239,9 @@ Query command options & 
\compactfeatureref{pm-query-options} &
 Output commands use stdout & \compactfeatureref{output-no-stdout} &
 Yes & Yes & Yes & Yes & No \\
 
+\t{eqawarn} & \compactfeatureref{eqawarn} &
+No & No & No & No & Yes \\
+
 \t{die -n} & \compactfeatureref{nonfatal-die} &
 No & No & No & Yes & Yes \\
 
@@ -465,6 +468,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{dolib} and \t{libopts} banned, \featureref{banned-commands}.
 \item Sandbox path removal commands, \featureref{sandbox-rm}.
 \item Output commands no longer use stdout, \featureref{output-no-stdout}.
+\item \t{eqawarn}, \featureref{eqawarn}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index d3b904c..64d1bd1 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -174,6 +174,10 @@ output, using stdout as an output facility is forbidden.
 manager may choose to log \t{elog} messages by default where \t{einfo} 
messages are not, for
 example.
 \item[ewarn] Displays a warning message. Must not go to stdout.
+\item[eqawarn] \featurelabel{eqawarn} Display a QA warning message intended 
for ebuild developers.
+The package manager may provide appropriate mechanisms to skip those 
messages for normal users.
+Must not go to stdout. Only available in EAPIs listed in 
table~\ref{tab:output-commands} as
+supporting \t{eqawarn}.
 \item[eerror] Displays an error message. Must not go to stdout.
 \item[ebegin] Displays an informational message. Should be used when beginning 
a possibly
 lengthy process, and followed by a call to \t{eend}.
@@ -186,13 +190,14 @@ output, using stdout as an output facility is forbidden.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Output commands for EAPIs}
 \label{tab:output-commands}
-\begin{tabular}{ll}
+\begin{tabular}{lll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{1}{c}{\textbf{Commands can output to stdout?}} \\
+  \multicolumn{1}{c}{\textbf{Commands can output to stdout?}} &
+  \multicolumn{1}{c}{\textbf{Supports \t{eqawarn}?}} \\
   \midrule
-  0, 1, 2, 3, 4, 5, 6 & Yes \\
-  7   & No  \\
+  0, 1, 2, 3, 4, 5, 6 & Yes & No  \\
+  7   & No  & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2018-02-24 Thread Ulrich Müller
commit: dde8b8b1253408be9181a58b4b08e6e0b3866487
Author: James Le Cuirot  gentoo  org>
AuthorDate: Sat Sep 23 20:53:59 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Feb 24 12:55:24 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=dde8b8b1

EAPI 7 drops --host-root in favor of -b, -d, and -r

Bug: https://bugs.gentoo.org/317337

 eapi-differences.tex |  8 +---
 pkg-mgr-commands.tex | 30 --
 2 files changed, 25 insertions(+), 13 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 989784c..df8ef98 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -215,8 +215,8 @@ Most utilities die & \compactfeatureref{die-on-failure} &
 \t{einstall} & \compactfeatureref{banned-commands} &
 Yes & Yes & Yes & Banned & Banned \\
 
-Option \t{-{}-host-root} & \compactfeatureref{host-root-option} &
-No & No & Yes & Yes & Yes \\
+Query command options & \compactfeatureref{pm-query-options} &
+None & None & \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, 
\t{-r} \\
 
 \t{die -n} & \compactfeatureref{nonfatal-die} &
 No & No & No & Yes & Yes \\
@@ -381,7 +381,7 @@ EAPI 5 is EAPI 4 with the following changes:
 \item \t{USE} is calculated differently, \featureref{profile-iuse-inject}.
 \item \t{find} is guaranteed to be GNU, \featureref{gnu-find}.
 \item \t{best_version} and \t{has_version} support the \t{-{}-host-root} 
option,
-\featureref{host-root-option}.
+\featureref{pm-query-options}.
 \item \t{econf} adds \t{-{}-disable-silent-rules}, \featureref{econf-options}.
 \item \t{doheader} and \t{newheader} support, \featureref{doheader}.
 \item \t{new*} can read from standard input, \featureref{newfoo-stdin}.
@@ -435,6 +435,8 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{econf} adds \t{-{}-with-sysroot}, \featureref{econf-options}.
 \item \t{BDEPEND}, \featureref{bdepend}.
 \item \t{BROOT}, \featureref{broot}.
+\item \t{best_version} and \t{has_version} support \t{-b}, \t{-d} and \t{-r} 
options instead of
+\t{-{}-host-root}, \featureref{pm-query-options}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 13eed79..e3c27f7 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -82,27 +82,37 @@ These commands are used to extract information about the 
system. Ebuilds must no
 these commands in parallel with any other package manager command. Ebuilds 
must not run any of
 these commands once the current phase function has returned.
 
-\featurelabel{host-root-option} In EAPIs listed in 
table~\ref{tab:foo-version-host-root-table} as
-supporting option \t{-{}-host-root}, this flag as the first argument will 
cause the query to apply
-to the host root instead of \t{ROOT}.
+\featurelabel{pm-query-options} In EAPIs listed in 
table~\ref{tab:pm-query-options} as supporting
+option \t{-{}-host-root}, this flag as the first argument will cause the query 
to apply to the
+host root. Otherwise, it applies to \t{ROOT}.
+
+In EAPIs listed in table~\ref{tab:pm-query-options} as supporting options 
\t{-b}, \t{-d} and \t{-r},
+these mutually exclusive flags as the first argument will cause the query to 
apply to locations
+targetted by \t{BDEPEND}, \t{DEPEND} and \t{RDEPEND}, respectively. When none 
of these options
+are given, \t{-r} is assumed.
+
 \begin{description}
 \item[has_version] Takes exactly one package dependency specification as an 
argument. Returns
-true if a package matching the specification is installed in \t{ROOT}, and 
false otherwise.
+true if a package matching the specification is installed, and false 
otherwise.
 \item[best_version] Takes exactly one package dependency specification as an 
argument. If a
 matching package is installed, prints the category, package name and 
version of the highest
 matching version; otherwise, prints an empty string. The exit code is 
unspecified.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{7}
-\begin{centertable}{EAPIs supporting \t{-{}-host-root} for \t{*_version} 
commands}
-\label{tab:foo-version-host-root-table}
-\begin{tabular}{ll}
+\begin{centertable}{Package manager query command options supported by EAPIs}
+\label{tab:pm-query-options}
+\begin{tabular}{l}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{1}{c}{\textbf{\t{*_version} supports \t{-{}-host-root}?}} \\
+  \multicolumn{1}{c}{\textbf{\t{-{}-host-root}?}} &
+  \multicolumn{1}{c}{\textbf{\t{-b}?}} &
+  \multicolumn{1}{c}{\textbf{\t{-d}?}} &
+  \multicolumn{1}{c}{\textbf{\t{-r}?}} \\
   \midrule
-  0, 1, 2, 3, 4 & No  \\
-  5, 6  & Yes \\
+  0, 1, 2, 3, 4 & No  & No  & No  & No  \\
+  5, 6  & Yes & No  & No  & No  \\
+  7 & No  & Yes & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2018-02-24 Thread Ulrich Müller
commit: 57757371ebb99d7b3bc65cb833e17bb3ab671ba1
Author: Michał Górny  gentoo  org>
AuthorDate: Fri Sep 29 03:13:57 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Feb 24 12:55:24 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=57757371

EAPI 7 removes DESTTREE and INSDESTTREE.

Bug: https://bugs.gentoo.org/173630

 eapi-differences.tex |  8 
 ebuild-env-vars.tex  | 19 ---
 2 files changed, 20 insertions(+), 7 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index f87e448..283891b 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -155,6 +155,12 @@ Parallel tests & \compactfeatureref{parallel-tests} &
 \t{ECLASSDIR} & \compactfeatureref{eclassdir} &
 Yes & Yes & Yes & Yes & No \\
 
+\t{DESTTREE} & \compactfeatureref{desttree} &
+Yes & Yes & Yes & Yes & No \\
+
+\t{INSDESTTREE} & \compactfeatureref{insdesttree} &
+Yes & Yes & Yes & Yes & No \\
+
 \t{KV} & \compactfeatureref{kv} &
 Yes & No & No & No & No \\
 
@@ -409,6 +415,8 @@ EAPI 7 is EAPI 6 with the following changes:
 \item Automatic enforcing of \t{REQUIRED_USE}, \featureref{auto-req-use}.
 \item \t{PORTDIR} is gone, \featureref{portdir}.
 \item \t{ECLASSDIR} is gone, \featureref{eclassdir}.
+\item \t{DESTTREE} is gone, \featureref{desttree}.
+\item \t{INSDESTTREE} is gone, \featureref{insdesttree}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 0258d1a..2d79f20 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -176,11 +176,14 @@ variable.
 \t{DESTTREE} &
 \t{src_install} &
 No &
-Controls the location where \t{dobin}, \t{dolib}, \t{domo}, and \t{dosbin} 
install things. \\
+\featurelabel{desttree} Controls the location where \t{dobin}, \t{dolib}, 
\t{domo},
+and \t{dosbin} install things. Only for EAPIs listed in 
table~\ref{tab:removed-env-vars-table}
+as supporting \t{DESTTREE}. \\
 \t{INSDESTTREE} &
 \t{src_install} &
 No &
-Controls the location where \t{doins} installs things. \\
+\featurelabel{insdesttree} Controls the location where \t{doins} installs 
things. Only for EAPIs
+listed in table~\ref{tab:removed-env-vars-table} as supporting 
\t{INSDESTTREE}. \\
 \t{USE} &
 All &
 Yes &
@@ -255,17 +258,19 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various removed env variables}
 \label{tab:removed-env-vars-table}
-\begin{tabular}{l}
+\begin{tabular}{lll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{c}{\textbf{\t{AA}?}} &
   \multicolumn{1}{c}{\textbf{\t{KV}?}} &
   \multicolumn{1}{c}{\textbf{\t{PORTDIR}?}} &
-  \multicolumn{1}{c}{\textbf{\t{ECLASSDIR}?}} \\
+  \multicolumn{1}{c}{\textbf{\t{ECLASSDIR}?}} &
+  \multicolumn{1}{c}{\textbf{\t{DESTTREE}?}} &
+  \multicolumn{1}{c}{\textbf{\t{INSDESTTREE}?}} \\
   \midrule
-  0, 1, 2, 3& Yes & Yes & Yes & Yes \\
-  4, 5, 6   & No  & No  & Yes & Yes \\
-  7 & No  & No  & No  & No  \\
+  0, 1, 2, 3& Yes & Yes & Yes & Yes & Yes & Yes \\
+  4, 5, 6   & No  & No  & Yes & Yes & Yes & Yes \\
+  7 & No  & No  & No  & No  & No  & No  \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2018-02-24 Thread Ulrich Müller
commit: e21634017ce2cd3f7b63954cd122f315f2b97e40
Author: Ulrich Müller  gentoo  org>
AuthorDate: Tue Nov  7 17:21:09 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Feb 24 12:55:24 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=e2163401

Add chewi to acknowledgements.

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

diff --git a/introduction.tex b/introduction.tex
index 5990f86..afbe708 100644
--- a/introduction.tex
+++ b/introduction.tex
@@ -62,9 +62,10 @@ applicable to tools or other applications that interact with 
ebuilds or ebuild r
 Thanks to Mike Kelly (package manager provided utilities, 
section~\ref{sec:pkg-mgr-commands}),
 Danny van Dyk (ebuild functions, section~\ref{sec:ebuild-functions}), David 
Leverton (various
 sections), Petteri Räty (environment state, 
section~\ref{sec:ebuild-env-state}), Michał Górny
-(various sections), Andreas K. Hüttel (stable use masking, 
section~\ref{sec:use-masking}) and
-Zac Medico (sub-slots, section~\ref{sec:mandatory-vars}) for contributions. 
Thanks also to
-Mike Frysinger and Brian Harring for proof-reading and suggestions for fixes 
and/or clarification.
+(various sections), Andreas K. Hüttel (stable use masking, 
section~\ref{sec:use-masking}),
+Zac Medico (sub-slots, section~\ref{sec:mandatory-vars}) and James Le Cuirot 
(build dependencies,
+section~\ref{sec:ebuild-env-vars}) for contributions. Thanks also to Mike 
Frysinger and
+Brian Harring for proof-reading and suggestions for fixes and/or clarification.
 
 % vim: set filetype=tex fileencoding=utf8 et tw=100 spell spelllang=en :
 



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

2018-02-24 Thread Ulrich Müller
commit: a8045b4be82742641a2c424dd4606f1e35605b41
Author: Michał Górny  gentoo  org>
AuthorDate: Fri Sep 29 14:33:22 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Feb 24 12:55:24 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=a8045b4b

EAPI 7 allows die in subshell.

Bug: https://bugs.gentoo.org/465008

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 97ca9ad..ddf480e 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -245,6 +245,9 @@ Output commands use stdout & 
\compactfeatureref{output-no-stdout} &
 \t{die -n} & \compactfeatureref{nonfatal-die} &
 No & No & No & Yes & Yes \\
 
+\t{die} in subshell & \compactfeatureref{subshell-die} &
+No & No & No & No & Yes \\
+
 \t{eapply} & \compactfeatureref{eapply} &
 No & No & No & Yes & Yes \\
 
@@ -469,6 +472,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item Sandbox path removal commands, \featureref{sandbox-rm}.
 \item Output commands no longer use stdout, \featureref{output-no-stdout}.
 \item \t{eqawarn}, \featureref{eqawarn}.
+\item \t{die} is guaranteed to work in a subshell, \featureref{subshell-die}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 64d1bd1..0a0997a 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -27,7 +27,7 @@ The following commands affect this behaviour:
 implementations to account for calling directly in ebuild scope or through 
\t{xargs}.
 
 Explicit \t{die} or \t{assert} commands only respect \t{nonfatal} when 
called with the \t{-n}
-option and in EAPIs supporting this option, see 
table~\ref{tab:nonfatal-die}.
+option and in EAPIs supporting this option, see 
table~\ref{tab:die-properties}.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{7}
@@ -209,23 +209,30 @@ completing. Ebuilds must not run any of these commands 
once the current phase fu
 \item[die] \featurelabel{nonfatal-die} If called under the \t{nonfatal} 
command (as per
 section~\ref{sec:failure-behaviour}) and with \t{-n} as its first 
parameter, displays a failure
 message provided in its following argument and then returns a non-zero 
exit status. Only in
-EAPIs listed in table~\ref{tab:nonfatal-die} as supporting option~\t{-n}. 
Otherwise, displays
+EAPIs listed in table~\ref{tab:die-properties} as supporting 
option~\t{-n}. Otherwise, displays
 a failure message provided in its first and only argument, and then aborts 
the build process.
-\t{die} is \e{not} guaranteed to work correctly if called from a subshell 
environment.
+
+\featurelabel{subshell-die} In EAPIs listed in 
table~\ref{tab:die-properties} as not providing
+subshell support, \t{die} is \e{not} guaranteed to work correctly if 
called from a subshell
+environment.
 \item[assert] Checks the value of the shell's pipe status variable, and if any 
component is non-zero
 (indicating failure), calls \t{die}, passing any parameters to it.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{7}
-\begin{centertable}{EAPIs supporting \t{-n} for \t{die} and \t{assert} 
commands}
-\label{tab:nonfatal-die}
-\begin{tabular}{ll}
+\begin{centertable}{Properties of \t{die} and \t{assert} commands in EAPIs}
+\label{tab:die-properties}
+\begin{tabular}{lll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{1}{c}{\textbf{\t{die} and \t{assert} support \t{-n}?}} \\
+  \multicolumn{2}{c}{\textbf{\t{die} and \t{assert}}} \\
+  &
+  \multicolumn{1}{c}{\textbf{support \t{-n}?}} &
+  \multicolumn{1}{c}{\textbf{work in subshell?}} \\
   \midrule
-  0, 1, 2, 3, 4, 5  & No  \\
-  6, 7  & Yes \\
+  0, 1, 2, 3, 4, 5  & No  & No  \\
+  6 & Yes & No  \\
+  7 & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2018-02-24 Thread Ulrich Müller
commit: 73a1a862fd41115cbd000a2f62ac94ead1c421f1
Author: Michał Górny  gentoo  org>
AuthorDate: Fri Sep 29 03:17:43 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Feb 24 12:55:24 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=73a1a862

EAPI 7 removes PORTDIR and ECLASSDIR.

Bug: https://bugs.gentoo.org/373349
Bug: https://bugs.gentoo.org/373351

 eapi-differences.tex |  8 
 ebuild-env-vars.tex  | 17 +++--
 2 files changed, 19 insertions(+), 6 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 326774d..f87e448 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -149,6 +149,12 @@ Parallel tests & \compactfeatureref{parallel-tests} &
 \t{AA} & \compactfeatureref{aa} &
 Yes & No & No & No & No \\
 
+\t{PORTDIR} & \compactfeatureref{portdir} &
+Yes & Yes & Yes & Yes & No \\
+
+\t{ECLASSDIR} & \compactfeatureref{eclassdir} &
+Yes & Yes & Yes & Yes & No \\
+
 \t{KV} & \compactfeatureref{kv} &
 Yes & No & No & No & No \\
 
@@ -401,6 +407,8 @@ EAPI 7 is EAPI 6 with the following changes:
 being matched, \featureref{empty-dep-groups}.
 \item \t{||=} dependency groups, \featureref{binding-any-of}.
 \item Automatic enforcing of \t{REQUIRED_USE}, \featureref{auto-req-use}.
+\item \t{PORTDIR} is gone, \featureref{portdir}.
+\item \t{ECLASSDIR} is gone, \featureref{eclassdir}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 4545272..0258d1a 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -110,11 +110,13 @@ variable.
 \t{PORTDIR} &
 \t{src_*} &
 No &
-The full path to the master repository's base directory. \\
+\featurelabel{portdir} The full path to the master repository's base 
directory. Only for EAPIs
+listed in table~\ref{tab:removed-env-vars-table} as supporting 
\t{PORTDIR}. \\
 \t{ECLASSDIR} &
 \t{src_*} &
 No &
-The full path to the master repository's eclass directory. \\
+\featurelabel{eclassdir} The full path to the master repository's eclass 
directory. Only for
+EAPIs listed in table~\ref{tab:removed-env-vars-table} as supporting 
\t{ECLASSDIR}. \\
 \t{ROOT} &
\t{pkg_*} &
No &
@@ -253,14 +255,17 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various removed env variables}
 \label{tab:removed-env-vars-table}
-\begin{tabular}{lll}
+\begin{tabular}{l}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{c}{\textbf{\t{AA}?}} &
-  \multicolumn{1}{c}{\textbf{\t{KV}?}} \\
+  \multicolumn{1}{c}{\textbf{\t{KV}?}} &
+  \multicolumn{1}{c}{\textbf{\t{PORTDIR}?}} &
+  \multicolumn{1}{c}{\textbf{\t{ECLASSDIR}?}} \\
   \midrule
-  0, 1, 2, 3& Yes & Yes \\
-  4, 5, 6, 7& No  & No  \\
+  0, 1, 2, 3& Yes & Yes & Yes & Yes \\
+  4, 5, 6   & No  & No  & Yes & Yes \\
+  7 & No  & No  & No  & No  \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2018-02-24 Thread Ulrich Müller
commit: 110fcdd34330052c16aa25d10c082530c8b1ba40
Author: Ulrich Müller  gentoo  org>
AuthorDate: Fri Nov 10 13:51:41 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Feb 24 12:55:24 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=110fcdd3

EAPI 7 has ENV_UNSET.

Thanks to mgorny for providing the initial wording.

Bug: https://bugs.gentoo.org/499288

 eapi-differences.tex  |  4 
 ebuild-env-vars.tex   |  2 ++
 profile-variables.tex | 23 +++
 3 files changed, 29 insertions(+)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index df8ef98..d738efe 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -179,6 +179,9 @@ Parallel tests & \compactfeatureref{parallel-tests} &
 \t{MERGE_TYPE} & \compactfeatureref{merge-type} &
 No & Yes & Yes & Yes & Yes \\
 
+\t{ENV_UNSET} & \compactfeatureref{env-unset} &
+No & No & No & No & Yes \\
+
 Sane locale settings & \compactfeatureref{locale-settings} &
 Undefined & Undefined & Undefined & Yes & Yes \\
 
@@ -437,6 +440,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{BROOT}, \featureref{broot}.
 \item \t{best_version} and \t{has_version} support \t{-b}, \t{-d} and \t{-r} 
options instead of
 \t{-{}-host-root}, \featureref{pm-query-options}.
+\item \t{ENV_UNSET}, \featureref{env-unset}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index e121987..c9ebf9b 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -330,6 +330,8 @@ package manager specific directories.
 
 \t{GZIP}, \t{BZIP}, \t{BZIP2}, \t{CDPATH}, \t{GREP_OPTIONS}, \t{GREP_COLOR} 
and \t{GLOBIGNORE}
 must not be set.
+\featurelabel{env-unset} In addition, any variable whose name appears in the 
\t{ENV_UNSET} variable
+must be unset, for EAPIs listed in table~\ref{tab:profile-env-unset} as 
supporting \t{ENV_UNSET}.
 
 \featurelabel{locale-settings} The package manager must ensure that the 
\t{LC_CTYPE} and
 \t{LC_COLLATE} locale categories are equivalent to the POSIX locale, as far as 
characters in the

diff --git a/profile-variables.tex b/profile-variables.tex
index 309f9e9..6cd770c 100644
--- a/profile-variables.tex
+++ b/profile-variables.tex
@@ -29,6 +29,13 @@ incrementally; otherwise, the following variables may or may 
not be treated incr
 \item \t{USE_EXPAND_UNPREFIXED}
 \end{compactitem}
 
+If the package manager supports any EAPI listed in 
table~\ref{tab:profile-env-unset} as using
+\t{ENV_UNSET}, the following variable must also be treated incrementally; 
otherwise, it may or
+may not be treated incrementally:
+\begin{compactitem}
+\item \t{ENV_UNSET}
+\end{compactitem}
+
 Other variables, except where they affect only package-manager-specific 
functionality (such as
 Portage's \t{FEATURES} variable), must not be treated incrementally---later 
definitions shall
 completely override those in parent profiles.
@@ -47,6 +54,20 @@ completely override those in parent profiles.
 \end{tabular}
 \end{centertable}
 
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{Profile-defined unsetting of variables in EAPIs}
+\label{tab:profile-env-unset}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Supports \t{ENV_UNSET}?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6 & No  \\
+  7   & Yes \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \subsection{Specific variables and their meanings}
 The following variables have specific meanings when set in profiles.
 \begin{description}
@@ -69,6 +90,8 @@ The following variables have specific meanings when set in 
profiles.
 displaying uninteresting or unhelpful information to an end user.
 \item[USE_EXPAND_IMPLICIT, IUSE_IMPLICIT] Used to inject implicit values into 
\t{IUSE}\@. See
 section~\ref{sec:use-iuse-handling} for details.
+\item[ENV_UNSET] Contains a whitespace-delimited list of variables that the 
package manager shall
+unset. See section~\ref{sec:ebuild-env-vars} for details.
 \end{description}
 
 In addition, for EAPIs listed in table~\ref{tab:profile-iuse-injection-table} 
as supporting profile



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

2018-02-24 Thread Ulrich Müller
commit: 3f34e25d1eaa27d3a7969910858939fb89b25500
Author: Michał Górny  gentoo  org>
AuthorDate: Fri Sep 29 14:24:10 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Feb 24 12:55:24 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=3f34e25d

EAPI 7 provides command fallback for nonfatal.

Bug: https://bugs.gentoo.org/622894

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 47c6950..f47a8c6 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -210,7 +210,7 @@ Most utilities die & \compactfeatureref{die-on-failure} &
 No & Yes & Yes & Yes & Yes \\
 
 \t{nonfatal} & \compactfeatureref{nonfatal} &
-No & Yes & Yes & Yes & Yes \\
+No & Yes & Yes & Yes & Function / external \\
 
 \t{dohard} & \compactfeatureref{banned-commands} &
 Yes & Banned & Banned & Banned & Banned \\
@@ -445,6 +445,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \t{-{}-host-root}, \featureref{pm-query-options}.
 \item \t{ENV_UNSET}, \featureref{env-unset}.
 \item \t{patch} is compatible with GNU patch 2.7, \featureref{gnu-patch}.
+\item \t{nonfatal} is both a shell function and an external command, 
\featureref{nonfatal}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index e3c27f7..fdf80e0 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -22,6 +22,10 @@ The following commands affect this behaviour:
 the build process due to a failure, instead a non-zero exit status shall 
be returned. Only in
 EAPIs listed in table~\ref{tab:commands-die-table} as supporting 
\t{nonfatal}.
 
+In EAPIs listed in table~\ref{tab:commands-die-table} as having 
\t{nonfatal} defined both
+as a shell function and as an external command, the package manager must 
provide both
+implementations to account for calling directly in ebuild scope or through 
\t{xargs}.
+
 Explicit \t{die} or \t{assert} commands only respect \t{nonfatal} when 
called with the \t{-n}
 option and in EAPIs supporting this option, see 
table~\ref{tab:nonfatal-die}.
 \end{description}
@@ -29,14 +33,16 @@ The following commands affect this behaviour:
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPI command failure behaviour}
 \label{tab:commands-die-table}
-\begin{tabular}{lll}
+\begin{tabular}{}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{1}{c}{\textbf{Command failure behaviour}} &
-  \multicolumn{1}{c}{\textbf{Supports \t{nonfatal}?}} \\
+  \multicolumn{1}{P{8em}}{\textbf{Command failure behaviour}} &
+  \multicolumn{1}{P{5em}}{\textbf{Supports \t{nonfatal}?}} &
+  \multicolumn{1}{P{12em}}{\textbf{\t{nonfatal} is both a function and an 
external command?}} \\
   \midrule
-  0, 1, 2, 3& Non-zero exit & No  \\
-  4, 5, 6, 7& Aborts& Yes \\
+  0, 1, 2, 3& Non-zero exit & No  & n/a \\
+  4, 5, 6   & Aborts& Yes & No  \\
+  7 & Aborts& Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2018-02-24 Thread Ulrich Müller
commit: 45c28df6cf1a8b333f310afcf635d05478d621b5
Author: James Le Cuirot  gentoo  org>
AuthorDate: Sun Sep 17 21:39:27 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Feb 24 12:55:24 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=45c28df6

EAPI 7 has BROOT

Bug: https://bugs.gentoo.org/317337

 eapi-differences.tex |  4 
 ebuild-env-vars.tex  | 20 ++--
 2 files changed, 18 insertions(+), 6 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 8f7db7e..989784c 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -161,6 +161,9 @@ Parallel tests & \compactfeatureref{parallel-tests} &
 \t{SYSROOT}, \t{ESYSROOT} & \compactfeatureref{sysroot} &
 No & No & No & No & Yes \\
 
+\t{BROOT} & \compactfeatureref{broot} &
+No & No & No & No & Yes \\
+
 \t{DESTTREE} & \compactfeatureref{desttree} &
 Yes & Yes & Yes & Yes & No \\
 
@@ -431,6 +434,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \featureref{trailing-slash}.
 \item \t{econf} adds \t{-{}-with-sysroot}, \featureref{econf-options}.
 \item \t{BDEPEND}, \featureref{bdepend}.
+\item \t{BROOT}, \featureref{broot}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 1e34488..e121987 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -144,6 +144,13 @@ variable.
 Contains the concatenation of the paths in the \t{SYSROOT} and \t{EPREFIX} 
variables,
 for convenience. See also the \t{EPREFIX} variable. Only for EAPIs listed
 in table~\ref{tab:offset-env-vars-table} as supporting \t{ESYSROOT}. \\
+\t{BROOT} &
+\t{src_*} &
+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}.
+\\
 \t{T} &
 All &
 Partially\footnote{Consistent and preserved across a single connected 
sequence of install or
@@ -256,19 +263,20 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various added env variables}
 \label{tab:added-env-vars-table}
-\begin{tabular}{ll}
+\begin{tabular}{lll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{c}{\textbf{\t{MERGE_TYPE}?}} &
   \multicolumn{1}{P{6em}}{\textbf{\t{REPLACING_VERSIONS}?}} &
   \multicolumn{1}{P{6em}}{\textbf{\t{REPLACED_BY_VERSION}?}} &
   \multicolumn{1}{P{6em}}{\textbf{\t{EBUILD_PHASE_FUNC}?}} &
-  \multicolumn{1}{c}{\textbf{\t{SYSROOT}?}} \\
+  \multicolumn{1}{c}{\textbf{\t{SYSROOT}?}} &
+  \multicolumn{1}{c}{\textbf{\t{BROOT}?}} \\
   \midrule
-  0, 1, 2, 3& No  & No  & No  & No  & No  \\
-  4 & Yes & Yes & Yes & No  & No  \\
-  5, 6  & Yes & Yes & Yes & Yes & No  \\
-  7 & Yes & Yes & Yes & Yes & Yes \\
+  0, 1, 2, 3& No  & No  & No  & No  & No  & No  \\
+  4 & Yes & Yes & Yes & No  & No  & No  \\
+  5, 6  & Yes & Yes & Yes & Yes & No  & No  \\
+  7 & Yes & Yes & Yes & Yes & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2018-02-24 Thread Ulrich Müller
commit: 34a7b3903ba14f05b7702784d83e3ef7ae1dc5f1
Author: Michał Górny  gentoo  org>
AuthorDate: Wed Oct  4 17:44:06 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Feb 24 12:55:24 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=34a7b390

EAPI 7 has sandbox directory removal functions.

Bug: https://bugs.gentoo.org/630422

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 7bddf41..96e0c0c 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -230,6 +230,9 @@ Most utilities die & \compactfeatureref{die-on-failure} &
 \t{libopts} & \compactfeatureref{banned-commands} &
 Yes & Yes & Yes & Yes & Banned \\
 
+Sandbox \t{rm*} commands & \compactfeatureref{sandbox-rm} &
+No & No & No & No & Yes \\
+
 Query command options & \compactfeatureref{pm-query-options} &
 None & None & \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, 
\t{-r} \\
 
@@ -457,6 +460,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{nonfatal} is both a shell function and an external command, 
\featureref{nonfatal}.
 \item \t{dohtml} banned, \featureref{banned-commands}.
 \item \t{dolib} and \t{libopts} banned, \featureref{banned-commands}.
+\item Sandbox path removal commands, \featureref{sandbox-rm}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 7b01ab8..db871c3 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -87,6 +87,35 @@ argument. Ebuilds must not run any of these commands once 
the current phase func
 \item[adddeny] Add a directory to the deny list.
 \end{description}
 
+\featurelabel{sandbox-rm} Additionally, in EAPIs listed in 
table~\ref{tab:sandbox-command-table}
+as supporting the respective commands, the following commands are available:
+\begin{description}
+\item[rmread] Remove a directory from the permitted read list.
+\item[rmwrite] Remove a directory from the permitted write list.
+\item[rmpredict] Remove a directory from the predict list.
+\item[rmdeny] Remove a directory from the deny list.
+\end{description}
+
+All of these commands match paths exactly. Removing a directory that is not 
present on the list
+is silently ignored.
+
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{Additional sandbox commands in EAPIs}
+\label{tab:sandbox-command-table}
+\begin{tabular}{l}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{\t{rmread}?}} &
+  \multicolumn{1}{c}{\textbf{\t{rmwrite}?}} &
+  \multicolumn{1}{c}{\textbf{\t{rmpredict}?}} &
+  \multicolumn{1}{c}{\textbf{\t{rmdeny}?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6 & No  & No  & No  & No  \\
+  7   & Yes & Yes & Yes & Yes \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \subsection{Package manager query commands}
 These commands are used to extract information about the system. Ebuilds must 
not run any of
 these commands in parallel with any other package manager command. Ebuilds 
must not run any of



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

2018-02-24 Thread Ulrich Müller
commit: d6d6c4d480ae2e4961a480fcf6c7cd2fdd0c892a
Author: Michał Górny  gentoo  org>
AuthorDate: Thu Sep 28 14:10:20 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Feb 24 12:55:24 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=d6d6c4d4

EAPI 7 disallows stdout output of output functions

Bug: https://bugs.gentoo.org/483240

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 96e0c0c..d7153a8 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -236,6 +236,9 @@ Sandbox \t{rm*} commands & \compactfeatureref{sandbox-rm} &
 Query command options & \compactfeatureref{pm-query-options} &
 None & None & \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, 
\t{-r} \\
 
+Output commands use stdout & \compactfeatureref{output-no-stdout} &
+Yes & Yes & Yes & Yes & No \\
+
 \t{die -n} & \compactfeatureref{nonfatal-die} &
 No & No & No & Yes & Yes \\
 
@@ -461,6 +464,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{dohtml} banned, \featureref{banned-commands}.
 \item \t{dolib} and \t{libopts} banned, \featureref{banned-commands}.
 \item Sandbox path removal commands, \featureref{sandbox-rm}.
+\item Output commands no longer use stdout, \featureref{output-no-stdout}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index db871c3..d3b904c 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -161,8 +161,12 @@ These commands display messages to the user. Unless 
otherwise stated, the entire
 used as a message, with backslash-escaped characters interpreted as for the 
\t{echo -e} command of
 bash, notably \t{\textbackslash t} for a horizontal tab, \t{\textbackslash n} 
for a new line, and
 \t{\textbackslash\textbackslash} for a literal backslash. Ebuilds must not run 
any of these commands
-once the current phase function has returned. Unless otherwise noted, output 
may be sent to stdout,
-stderr or some other appropriate facility.
+once the current phase function has returned.
+
+\featurelabel{output-no-stdout} Unless otherwise noted, output may be sent to 
stderr or some other
+appropriate facility. In EAPIs listed in table~\ref{tab:output-commands} as 
not allowing stdout
+output, using stdout as an output facility is forbidden.
+
 \begin{description}
 \item[einfo] Displays an informational message.
 \item[einfon] Displays an informational message without a trailing newline.
@@ -179,6 +183,20 @@ stderr or some other appropriate facility.
 message followed by a failure indicator. Returns its first argument as 
exit status.
 \end{description}
 
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{Output commands for EAPIs}
+\label{tab:output-commands}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Commands can output to stdout?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6 & Yes \\
+  7   & No  \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \subsection{Error commands}
 These commands are used when an error is detected that will prevent the build 
process from
 completing. Ebuilds must not run any of these commands once the current phase 
function has returned.



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

2018-02-24 Thread Ulrich Müller
commit: 6bda8dc5d0d1b10bcdd6ef79db2947382706e7a8
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun Nov  5 16:08:23 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Feb 24 12:55:24 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=6bda8dc5

pkg-mgr-commands.tex: Join docompress and dostrip sections.

 dependencies.tex |   4 +-
 pkg-mgr-commands.tex | 130 +++
 2 files changed, 49 insertions(+), 85 deletions(-)

diff --git a/dependencies.tex b/dependencies.tex
index deede34..7ae119b 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -507,8 +507,8 @@ The following tokens are permitted inside \t{RESTRICT}:
 \item[fetch] The package's \t{SRC_URI} entries may not be downloaded 
automatically. If
 entries are not available, \t{pkg_nofetch} is called. Implies \t{mirror}.
 \item[strip] No stripping of debug symbols from files to be installed may be 
performed. In EAPIs
-listed in table~\ref{tab:dostrip} as supporting controllable stripping, 
this behaviour may be
-altered by the \t{dostrip} command.
+listed in table~\ref{tab:staging-area-commands} as supporting controllable 
stripping, this
+behaviour may be altered by the \t{dostrip} command.
 \item[userpriv] The package manager may not drop root privileges when building 
the package.
 \item[test] The \t{src_test} phase must not be run.
 \end{description}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index dd0b02d..ed3af1b 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -768,27 +768,25 @@ has returned.
 
 \end{description}
 
-\subsection{Commands affecting install compression}
+\subsection{Commands controlling manipulation of files in the staging area}
+These commands are used to control optional manipulations that the package 
manager may perform on
+files in the staging directory \t{ED}, like compressing files or stripping 
symbols from object
+files.
 
-\featurelabel{docompress} In EAPIs listed in table~\ref{tab:compression-table} 
as supporting
-controllable compression, the package manager may optionally compress a subset 
of the files under
-the \t{ED} directory. To control which directories may or may not be 
compressed, the package manager
-shall maintain two lists:
-
-\begin{compactitem}
-\item An inclusion list, which initially contains \t{/usr/share/doc}, 
\t{/usr/share/info} and
-\t{/usr/share/man}.
-\item An exclusion list, which initially contains 
\t{/usr/share/doc/\$\{PF\}/html}.
-\end{compactitem}
+For each of the operations mentioned below, the package manager shall maintain 
an inclusion list
+and an exclusion list, in order to control which directories and files the 
operation may or may not
+be performed upon. The initial contents of the two lists is specified below 
for each of the
+commands, respectively.
 
-The optional compression shall be carried out after \t{src_install} has 
completed, and before the
-execution of any subsequent phase function. For each item in the inclusion 
list, pretend it has the
-value of the \t{ED} variable prepended, then:
+Any of these operations shall be carried out after \t{src_install} has 
completed, and before the
+execution of any subsequent phase function. For each item in the inclusion 
list, pretend it has
+the value of the \t{ED} variable prepended, then:
 
 \begin{compactitem}
 \item If it is a directory, act as if every file or directory immediately 
under this directory
 were in the inclusion list.
-\item If the item is a file, it may be compressed unless it has been excluded 
as described below.
+\item If the item is a file, the operation may be performed on it, unless it 
has been excluded as
+described below.
 \item If the item does not exist, it is ignored.
 \end{compactitem}
 
@@ -798,96 +796,62 @@ pretend it has the value of the \t{ED} variable 
prepended, then:
 \begin{compactitem}
 \item If it is a directory, act as if every file or directory immediately 
under this directory
 were in the exclusion list.
-\item If the item is a file, it shall not be compressed.
+\item If the item is a file, the operation shall not be performed on it.
 \item If the item does not exist, it is ignored.
 \end{compactitem}
 
-The package manager shall take appropriate steps to ensure that its 
compression mechanisms behave
-sensibly even if an item is listed in the inclusion list multiple times, if an 
item is a symlink,
-or if a file is already compressed.
-
-The following commands may be used in \t{src_install} to alter these lists. It 
is an error to call
-any of these functions from any other phase.
-
-\begin{description}
-\item[docompress] If the first argument is \t{-x}, add each of its subsequent 
arguments to the
-exclusion list. Otherwise, add each argument to the inclusion list. Only 
available in EAPIs listed
-in table~\ref{tab:compression-table} as supporting \t{docompress}.
-\end{description}
-
-\ChangeWhenAddingAnEAPI{7}

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

2018-02-24 Thread Ulrich Müller
commit: c93d358570ce434f444c0ee5add7bc9d9a58
Author: Michał Górny  gentoo  org>
AuthorDate: Wed Sep 27 21:23:22 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Feb 24 12:55:24 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=c93d3585

EAPI 7 has version manipulation and comparison functions

Bug: https://bugs.gentoo.org/482170

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 6a2cab7..8deba55 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -302,6 +302,9 @@ Controllable stripping & \compactfeatureref{dostrip} &
 \t{in_iuse} & \compactfeatureref{in-iuse} &
 No & No & No & Yes & Yes \\
 
+\t{ver_*} commands & \compactfeatureref{ver-commands} &
+No & No & No & No & Yes \\
+
 \t{unpack} absolute paths & \compactfeatureref{unpack-absolute} &
 No & No & No & Yes & Yes \\
 
@@ -484,6 +487,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{die} is guaranteed to work in a subshell, \featureref{subshell-die}.
 \item \t{domo} installs to \t{/usr}, \featureref{domo-path}.
 \item Controllable stripping and \t{dostrip}, \featureref{dostrip}.
+\item Version manipulation and comparison commands, \featureref{ver-commands}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index ed3af1b..b49e9b3 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -952,6 +952,86 @@ These functions check whitespace-separated lists for a 
particular value.
 \item[hasq] Deprecated synonym for \t{has}.
 \end{description}
 
+\subsection{Version manipulation and comparison commands}
+\featurelabel{ver-commands}
+These commands provide utilities for working with version strings. Their 
availability per EAPI is
+listed in table~\ref{tab:version-commands}.
+
+For the purpose of version manipulation commands, the specification provides a 
method for splitting
+an arbitrary version string (not necessarily conforming to 
section~\ref{sec:version-spec}) into
+a series of version components and version separators.
+
+A version component consists either purely of digits (\t{[0-9]+}) or purely of 
uppercase and
+lowercase ASCII letters (\t{[A-Za-z]+}). A version separator is either a 
string of any other
+characters (\t{[\textasciicircum A-Za-z0-9]}) or it occurs at the transition 
between a sequence
+of digits and a sequence of letters, or vice versa. In the latter case, the 
version separator is
+an empty string.
+
+The version string is processed left-to-right, with the successive version 
components being assigned
+successive indices starting with 1. The separator following a version 
component is assigned
+the index of the preceding version component. If the first version component 
is preceded by
+a non-empty string of version separator characters, this separator is assigned 
the index 0.
+
+The version components are presumed present if not empty. The version 
separators between version
+components are always presumed present, even if they are empty. The version 
separators preceding
+the first version component and following the last are only presumed present 
if they are not empty.
+
+Whenever the commands support ranges, the range is specified as a non-negative 
integer, optionally
+followed by a hyphen (\t{-}), which in turn is optionally followed by another 
non-negative integer.
+
+A single integer specifies a single component or separator index. An integer 
followed by a hyphen
+specifies all components or separators starting with the one at the specified 
index. Two integers
+separated by a hyphen specify a range of versions starting at the index 
specified by the first
+and ending at the second, inclusively.
+
+\begin{description}
+\item[ver_cut] Takes a range as the first argument, and optionally a version 
string as the second.
+Prints a substring of the version string starting at the version component 
specified as start
+of the range and ending at the version component specified as end of the 
range. If the version
+string is not specified, \t{\$\{PVR\}} is used.
+
+If the range spans outside the present version components, the missing 
components and separators
+are presumed empty. In particular, the range starting at zero includes the 
zeroth version
+separator if present, and the range spanning past the last version 
component includes the suffix
+following it if present. A range that does not intersect with any present 
version components
+yields an empty string.
+
+\item[ver_rs] Takes one or more pairs of arguments, optionally followed by a 
version string.
+Every argument pair specifies a range and a replacement string. Prints a 
version string after
+performing the specified separator substitutions. If the version string is 
not specified,
+\t{\$\{PVR\}} is used.
+
+

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

2018-02-24 Thread Ulrich Müller
commit: 90e5c41d89bedfc54e3b3967cd5cbca7f8ceea9a
Author: Michał Górny  gentoo  org>
AuthorDate: Thu Sep 28 17:50:56 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Feb 24 12:55:24 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=90e5c41d

EAPI 7 requires GNU patch 2.7.

Bug: https://bugs.gentoo.org/593786

 commands.tex | 13 -
 eapi-differences.tex |  4 
 2 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/commands.tex b/commands.tex
index 86b4232..5ba9626 100644
--- a/commands.tex
+++ b/commands.tex
@@ -26,7 +26,8 @@ The following commands must always be available in the ebuild 
environment:
 page~\pageref{tab:bash-version}.
 \item \t{sed} must be available, and must support all forms of invocations 
valid for GNU sed
 version 4 or later.
-\item \t{patch} must be available, and must support all inputs valid for GNU 
patch.
+\item \featurelabel{gnu-patch} \t{patch} must be available, and must support 
all inputs valid
+for GNU patch, version as listed in table~\ref{tab:system-commands-table}.
 \item \featurelabel{gnu-find} \t{find} and \t{xargs} must be available, and 
must support all forms
 of invocations valid for GNU findutils version 4.4 or later. Only for 
EAPIs listed in
 table~\ref{tab:system-commands-table} as requiring GNU find.
@@ -35,13 +36,15 @@ The following commands must always be available in the 
ebuild environment:
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{System commands for EAPIs}
 \label{tab:system-commands-table}
-\begin{tabular}{ll}
+\begin{tabular}{lll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{1}{c}{\textbf{GNU \t{find}?}} \\
+  \multicolumn{1}{c}{\textbf{GNU \t{find}?}} &
+  \multicolumn{1}{c}{\textbf{GNU \t{patch} version}} \\
   \midrule
-  0, 1, 2, 3, 4 & Undefined \\
-  5, 6, 7   & Yes   \\
+  0, 1, 2, 3, 4 & Undefined & Any \\
+  5, 6  & Yes   & Any \\
+  7 & Yes   & 2.7 \\
   \bottomrule
 \end{tabular}
 \end{centertable}

diff --git a/eapi-differences.tex b/eapi-differences.tex
index d738efe..47c6950 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -200,6 +200,9 @@ Profile \t{IUSE} injection & 
\compactfeatureref{profile-iuse-inject} &
 Trailing slash in \t{D} etc. & \compactfeatureref{trailing-slash} &
 Yes & Yes & Yes & Yes & No \\
 
+GNU \t{patch} version & \compactfeatureref{gnu-patch} &
+Any & Any & Any & Any & 2.7 \\
+
 \t{find} is GNU? & \compactfeatureref{gnu-find} &
 Undefined & Undefined & Yes & Yes & Yes \\
 
@@ -441,6 +444,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{best_version} and \t{has_version} support \t{-b}, \t{-d} and \t{-r} 
options instead of
 \t{-{}-host-root}, \featureref{pm-query-options}.
 \item \t{ENV_UNSET}, \featureref{env-unset}.
+\item \t{patch} is compatible with GNU patch 2.7, \featureref{gnu-patch}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}



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

2018-02-24 Thread Ulrich Müller
commit: 250180442377dc45ba37884a62f174ba6877e5a2
Author: Michał Górny  gentoo  org>
AuthorDate: Fri Sep 29 14:02:49 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Feb 24 12:55:24 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=25018044

EAPI 7 bans dolib and libopts.

Bug: https://bugs.gentoo.org/630416

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 12ece88..7bddf41 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -224,6 +224,12 @@ Most utilities die & \compactfeatureref{die-on-failure} &
 \t{dohtml} & \compactfeatureref{banned-commands} &
 Yes & Yes & Yes & Yes & Banned \\
 
+\t{dolib} & \compactfeatureref{banned-commands} &
+Yes & Yes & Yes & Yes & Banned \\
+
+\t{libopts} & \compactfeatureref{banned-commands} &
+Yes & Yes & Yes & Yes & Banned \\
+
 Query command options & \compactfeatureref{pm-query-options} &
 None & None & \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, 
\t{-r} \\
 
@@ -450,6 +456,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{patch} is compatible with GNU patch 2.7, \featureref{gnu-patch}.
 \item \t{nonfatal} is both a shell function and an external command, 
\featureref{nonfatal}.
 \item \t{dohtml} banned, \featureref{banned-commands}.
+\item \t{dolib} and \t{libopts} banned, \featureref{banned-commands}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 82e48ca..7b01ab8 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -56,20 +56,22 @@ called, the package manager must abort the build process 
indicating an error.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Banned commands}
 \label{tab:banned-commands-table}
-\begin{tabular}{l}
+\begin{tabular}{lll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{4}{c}{\textbf{Command banned?}} \\
+  \multicolumn{6}{c}{\textbf{Command banned?}} \\
   \multicolumn{1}{c}{} &
   \multicolumn{1}{c}{\textbf{\t{dohard}}} &
   \multicolumn{1}{c}{\textbf{\t{dosed}}} &
   \multicolumn{1}{c}{\textbf{\t{einstall}}} &
-  \multicolumn{1}{c}{\textbf{\t{dohtml}}} \\
+  \multicolumn{1}{c}{\textbf{\t{dohtml}}} &
+  \multicolumn{1}{c}{\textbf{\t{dolib}}} &
+  \multicolumn{1}{c}{\textbf{\t{libopts}}} \\
   \midrule
-  0, 1, 2, 3& No  & No  & No  & No  \\
-  4, 5  & Yes & Yes & No  & No  \\
-  6 & Yes & Yes & Yes & No  \\
-  7 & Yes & Yes & Yes & Yes \\
+  0, 1, 2, 3& No  & No  & No  & No  & No  & No  \\
+  4, 5  & Yes & Yes & No  & No  & No  & No  \\
+  6 & Yes & Yes & Yes & No  & No  & No  \\
+  7 & Yes & Yes & Yes & Yes & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -489,7 +491,9 @@ can be extended or reduced (see below). The options that 
can be passed to \t{doh
 \item[dolib.so] As for \t{dolib.a} except each file is installed with mode 
\t{0755}.
 
 \item[dolib] As for \t{dolib.a} except that the default install mode can be 
overriden with
-the \t{install} options set by the most recent \t{libopts} call.
+the \t{install} options set by the most recent \t{libopts} call. In EAPIs 
listed
+in table~\ref{tab:banned-commands-table}, this command is banned as per
+section~\ref{sec:banned-commands}.
 
 \begin{algorithm}
 \caption{Determining the library directory} \label{alg:ebuild-libdir}
@@ -685,6 +689,8 @@ has returned.
 \item[exeopts] Sets the options passed by \t{doexe} et al.\ to the \t{install} 
command.
 
 \item[libopts] Sets the options passed by \t{dolib} et al.\ to the \t{install} 
command.
+In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as
+per section~\ref{sec:banned-commands}.
 
 \end{description}
 



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

2018-02-24 Thread Ulrich Müller
commit: 17ac1d44eb5ef2ce48370d162d4abec3eba2bc5a
Author: Michał Górny  gentoo  org>
AuthorDate: Fri Sep 29 13:48:46 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Feb 24 12:55:24 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=17ac1d44

pkg-mgr-commands: Redefine dolib* in terms of libdir.a

Since EAPI 7 removes dolib, it would be a bad fit to describe the two
other commands on top of one that is removed. Instead, start by defining
libdir.a and then define the two other commands on top of it.

This also clarifies that dolib.a & dolib.so do not respect libopts,
while the old wording was not clear on that. However, this is at least
how it was implemented in Portage (with dolib.a and dolib.so overriding
libopts completely).

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

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 9e7390c..82e48ca 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -481,15 +481,15 @@ can be extended or reduced (see below). The options that 
can be passed to \t{doh
 symlink is encountered. Failure behaviour is EAPI dependent as per
 section~\ref{sec:failure-behaviour}.
 
-\item[dolib] For each argument, installs it into the appropriate library 
subdirectory under
-\t{DESTTREE}, as determined by algorithm~\ref{alg:ebuild-libdir}. Files 
are installed by default
-with file mode \t{0644}, or with the \t{install} options set by the most 
recent \t{libopts}
-call. Any symlinks are installed into the same directory as relative links 
to their original
-target. Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
+\item[dolib.a] For each argument, installs it into the appropriate library 
subdirectory under
+\t{DESTTREE}, as determined by algorithm~\ref{alg:ebuild-libdir}. Files 
are installed with file
+mode \t{0644}. Any symlinks are installed into the same directory as 
relative links to their
+original target. Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
 
-\item[dolib.a] As for \t{dolib} except each file is installed with mode 
\t{0644}.
+\item[dolib.so] As for \t{dolib.a} except each file is installed with mode 
\t{0755}.
 
-\item[dolib.so] As for \t{dolib} except each file is installed with mode 
\t{0755}.
+\item[dolib] As for \t{dolib.a} except that the default install mode can be 
overriden with
+the \t{install} options set by the most recent \t{libopts} call.
 
 \begin{algorithm}
 \caption{Determining the library directory} \label{alg:ebuild-libdir}



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

2018-02-24 Thread Ulrich Müller
commit: 080a25221d9d5920738b046f2f3ccaf94a0c9ab6
Author: Michał Górny  gentoo  org>
AuthorDate: Wed Oct  4 16:19:16 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Feb 24 12:55:24 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=080a2522

EAPI 7 has BDEPEND

Bug: https://bugs.gentoo.org/317337

 dependencies.tex | 33 ++---
 eapi-differences.tex |  4 
 ebuild-vars.tex  |  1 +
 eclasses.tex | 11 ++-
 metadata-cache.tex   |  3 ++-
 5 files changed, 43 insertions(+), 9 deletions(-)

diff --git a/dependencies.tex b/dependencies.tex
index 51c67a4..e53cff6 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -15,7 +15,7 @@
   None (ebuilds can rely only on the packages in the system~set) \\
   \addlinespace
   \t{src_unpack}, \t{src_prepare}, \t{src_configure}, \t{src_compile}, 
\t{src_test},
-  \t{src_install} & \t{DEPEND} \\
+  \t{src_install} & \t{DEPEND}, \t{BDEPEND} \\
   \addlinespace
   \t{pkg_preinst}, \t{pkg_postinst}, \t{pkg_prerm}, \t{pkg_postrm} &
   \t{RDEPEND} (unless the particular dependency results in a circular 
dependency, in which
@@ -38,6 +38,32 @@ There are three classes of dependencies supported by ebuilds:
 the package manager finishes the batch of installs.
 \end{compactitem}
 
+\featurelabel{bdepend} Additionally, in EAPIs listed in 
table~\ref{tab:depend-table}
+as supporting \t{BDEPEND}, the build dependencies are split into two 
subclasses:
+
+\begin{compactitem}
+\item \t{BDEPEND} build dependencies that are binary compatible with the 
native build system
+(\t{CBUILD}). The ebuild is allowed to call binary executables installed 
by this kind of
+dependency.
+\item \t{DEPEND} build dependencies that are binary compatible with the 
system being built
+(\t{CHOST}). The ebuild must not execute binary executables installed by 
this kind of
+dependency.
+\end{compactitem}
+
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPIs supporting additional dependency types}
+\label{tab:depend-table}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Supports \t{BDEPEND}?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6 & No  \\
+  7   & Yes \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 Table~\ref{tab:phase-function-dependency-classes} lists dependencies which 
must be satisfied before
 a particular phase function is executed.
 
@@ -51,7 +77,8 @@ The following elements are recognised in at least one class 
of specification. Al
 be surrounded on both sides by whitespace, except at the start and end of the 
string.
 
 \begin{compactitem}
-\item A package dependency specification. Permitted in \t{DEPEND}, 
\t{RDEPEND}, \t{PDEPEND}.
+\item A package dependency specification. Permitted in \t{DEPEND}, 
\t{BDEPEND}, \t{RDEPEND},
+\t{PDEPEND}.
 \item A URI, in the form \t{proto://host/path}. Permitted in \t{SRC_URI} and 
\t{HOMEPAGE}\@.
 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
@@ -69,7 +96,7 @@ 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{RDEPEND}, \t{PDEPEND}, \t{LICENSE}, 
\t{REQUIRED_USE}.
+Permitted in \t{DEPEND}, \t{BDEPEND}, \t{RDEPEND}, \t{PDEPEND}, 
\t{LICENSE}, \t{REQUIRED_USE}.
 \item \featurelabel{binding-any-of} A binding-any-of group, which has the same 
format as the any-of
 group, but begins with the string \t{||=} instead. Permitted in 
\t{DEPEND}, \t{RDEPEND} in EAPIs
 listed in table~\ref{tab:dep-groups} as supporting \t{||=} groups.

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 0f6371b..8f7db7e 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -77,6 +77,9 @@ Bash version & \compactfeatureref{bash-version} &
 \t{DEFINED_PHASES} & \compactfeatureref{defined-phases} &
 Optionally & Yes & Yes & Yes & Yes \\
 
+\t{BDEPEND} & \compactfeatureref{bdepend} &
+No & No & No & No & Yes \\
+
 Empty \t{||}, \t{\textasciicircum\textasciicircum} groups match &
 \compactfeatureref{empty-dep-groups} &
 Yes & Yes & Yes & Yes & No \\
@@ -427,6 +430,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{ROOT}, \t{EROOT}, \t{D}, \t{ED} no longer end with a trailing slash,
 \featureref{trailing-slash}.
 \item \t{econf} adds \t{-{}-with-sysroot}, \featureref{econf-options}.
+\item \t{BDEPEND}, \featureref{bdepend}.
 \end{compactitem}
 
 

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

2018-02-24 Thread Ulrich Müller
commit: f158293c3d7a53d7ba7693c31ff65a8ddf40baa3
Author: James Le Cuirot  gentoo  org>
AuthorDate: Tue Sep 19 21:36:40 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Feb 24 12:55:24 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=f158293c

EAPI 7: econf adds --with-sysroot

Bug: https://bugs.gentoo.org/317337

 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 9c769b5..0f6371b 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -225,7 +225,7 @@ Option \t{-{}-host-root} & 
\compactfeatureref{host-root-option} &
 None & disable dependency tracking &
 disable dependency tracking, disable silent rules &
 disable dependency tracking, disable silent rules, docdir, htmldir &
-disable dependency tracking, disable silent rules, docdir, htmldir \\
+disable dependency tracking, disable silent rules, docdir, htmldir, with 
sysroot \\
 
 \t{dodoc -r} & \compactfeatureref{dodoc} &
 No & Yes & Yes & Yes & Yes \\
@@ -426,6 +426,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{SYSROOT} and \t{ESYSROOT}, \featureref{sysroot}.
 \item \t{ROOT}, \t{EROOT}, \t{D}, \t{ED} no longer end with a trailing slash,
 \featureref{trailing-slash}.
+\item \t{econf} adds \t{-{}-with-sysroot}, \featureref{econf-options}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 50a3748..13eed79 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -258,6 +258,9 @@ current phase function has returned.
 \item -{}-htmldir must be \t{\$\{EPREFIX\}/usr/share/doc/\$\{PF\}/html}, 
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{-{}-htmldir} occurs in the output of \t{configure -{}-help}.
+\item -{}-with-sysroot must be \t{\$\{ESYSROOT\}}, 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{-{}-with-sysroot} occurs in the output of \t{configure 
-{}-help}.
 \item -{}-build must be the value of the \t{CBUILD} environment variable. 
This option will only
 be passed if \t{CBUILD} is non-empty.
 \item -{}-host must be the value of the \t{CHOST} environment variable.
@@ -275,18 +278,20 @@ current phase function has returned.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Extra \t{econf} arguments for EAPIs}
 \label{tab:econf-options-table}
-\begin{tabular}{l}
+\begin{tabular}{ll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{c}{\textbf{-{}-disable-dependency-tracking}} &
   \multicolumn{1}{c}{\textbf{-{}-disable-silent-rules}} &
   \multicolumn{1}{c}{\textbf{-{}-docdir}} &
-  \multicolumn{1}{c}{\textbf{-{}-htmldir}} \\
+  \multicolumn{1}{c}{\textbf{-{}-htmldir}} &
+  \multicolumn{1}{c}{\textbf{-{}-with-sysroot}} \\
   \midrule
-  0, 1, 2, 3& No  & No  & No  & No  \\
-  4 & Yes & No  & No  & No  \\
-  5 & Yes & Yes & No  & No  \\
-  6, 7  & Yes & Yes & Yes & Yes \\
+  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 & Yes & Yes & Yes & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2018-02-24 Thread Ulrich Müller
commit: 38bce18a82faf919a76c066485c92ea8dff9d31b
Author: Ulrich Müller  gentoo  org>
AuthorDate: Tue Oct 31 18:19:03 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Feb 24 12:55:24 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=38bce18a

Trim the width of several tables.

tab:optional-vars-table: Reduce column separation very slightly
(by 0.1pt) to make the width of the table fit.

tab:added-env-vars-table was also too wide, which is fixed by reducing
the width of the paragraph type columns.

tab:econf-options-table: Change columns with overlong headers to
paragraph type, in order to allow line breaks.

 ebuild-env-vars.tex  | 8 
 ebuild-vars.tex  | 1 +
 pkg-mgr-commands.tex | 4 ++--
 3 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index c9ebf9b..7836bd9 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -266,10 +266,10 @@ variable.
 \begin{tabular}{lll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{1}{c}{\textbf{\t{MERGE_TYPE}?}} &
-  \multicolumn{1}{P{6em}}{\textbf{\t{REPLACING_VERSIONS}?}} &
-  \multicolumn{1}{P{6em}}{\textbf{\t{REPLACED_BY_VERSION}?}} &
-  \multicolumn{1}{P{6em}}{\textbf{\t{EBUILD_PHASE_FUNC}?}} &
+  \multicolumn{1}{P{3.25em}}{\textbf{\t{MERGE_TYPE}?}} &
+  \multicolumn{1}{P{5.25em}}{\textbf{\t{REPLACING_VERSIONS}?}} &
+  \multicolumn{1}{P{5.75em}}{\textbf{\t{REPLACED_BY_VERSION}?}} &
+  \multicolumn{1}{P{5.75em}}{\textbf{\t{EBUILD_PHASE_FUNC}?}} &
   \multicolumn{1}{c}{\textbf{\t{SYSROOT}?}} &
   \multicolumn{1}{c}{\textbf{\t{BROOT}?}} \\
   \midrule

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index b873051..5169e0a 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -110,6 +110,7 @@ Ebuilds may define any of the following variables:
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various ebuild-defined variables}
 \label{tab:optional-vars-table}
+\addtolength{\tabcolsep}{-0.1pt} % table is very slightly too wide
 \begin{tabular}{}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index b49e9b3..266fc36 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -360,8 +360,8 @@ current phase function has returned.
 \begin{tabular}{ll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{1}{c}{\textbf{-{}-disable-dependency-tracking}} &
-  \multicolumn{1}{c}{\textbf{-{}-disable-silent-rules}} &
+  \multicolumn{1}{P{9em}}{\textbf{-{}-disable-dependency-tracking}} &
+  \multicolumn{1}{P{5em}}{\textbf{-{}-disable-silent-rules}} &
   \multicolumn{1}{c}{\textbf{-{}-docdir}} &
   \multicolumn{1}{c}{\textbf{-{}-htmldir}} &
   \multicolumn{1}{c}{\textbf{-{}-with-sysroot}} \\



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

2018-02-24 Thread Ulrich Müller
commit: 53277f65792615a2b4442454543e95c0897f42b8
Author: Michał Górny  gentoo  org>
AuthorDate: Sat Sep 23 23:46:32 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Feb 24 12:55:24 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=53277f65

dependencies: Provide a nice summary table for dep APIs

 dependencies.tex | 18 +-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/dependencies.tex b/dependencies.tex
index e53cff6..696f478 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -26,6 +26,21 @@
 \end{tabular}
 \end{centertable}
 
+\begin{centertable}{Summary of other interfaces related to dependency classes}
+\label{tab:dep-class-api}
+\begin{tabular}{}
+  \toprule
+& \t{BDEPEND} & \t{DEPEND} & 
\t{RDEPEND}, \t{PDEPEND} \\
+  \midrule
+  Binary compatible with& \t{CBUILD}  & \t{CHOST}  & 
\t{CHOST} \\
+  Base unprefixed path  & \t{/}   & \t{\$\{SYSROOT\}}  & 
\t{\$\{ROOT\}}\\
+  Relevant offset-prefix& \t{\$\{BROOT\}} & \t{\$\{EPREFIX\}}  & 
\t{\$\{EPREFIX\}} \\
+  Path combined with prefix & \t{\$\{BROOT\}} & \t{\$\{ESYSROOT\}} & 
\t{\$\{EROOT\}}   \\
+  PM query command option   & \t{-b}  & \t{-d} & 
\t{-r}\\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 There are three classes of dependencies supported by ebuilds:
 
 \begin{compactitem}
@@ -65,7 +80,8 @@ as supporting \t{BDEPEND}, the build dependencies are split 
into two subclasses:
 \end{centertable}
 
 Table~\ref{tab:phase-function-dependency-classes} lists dependencies which 
must be satisfied before
-a particular phase function is executed.
+a particular phase function is executed. Table~\ref{tab:dep-class-api} 
summarises additional
+interfaces related to the dependency classes.
 
 In addition, \t{SRC_URI}, \t{HOMEPAGE}, \t{RESTRICT}, \t{PROPERTIES}, 
\t{LICENSE} and
 \t{REQUIRED_USE} use dependency-style specifications to specify their values.



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

2018-02-24 Thread Ulrich Müller
commit: cbdee0efb3f2c00e7290fd8e66ff34fd415584de
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun Oct 29 09:30:43 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Feb 24 12:55:24 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=cbdee0ef

EAPI 7 has controllable stripping and dostrip.

Bug: https://bugs.gentoo.org/203891

 dependencies.tex |  4 +++-
 eapi-differences.tex |  7 ++
 pkg-mgr-commands.tex | 62 
 3 files changed, 72 insertions(+), 1 deletion(-)

diff --git a/dependencies.tex b/dependencies.tex
index 696f478..deede34 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -506,7 +506,9 @@ The following tokens are permitted inside \t{RESTRICT}:
 be checked when fetching.
 \item[fetch] The package's \t{SRC_URI} entries may not be downloaded 
automatically. If
 entries are not available, \t{pkg_nofetch} is called. Implies \t{mirror}.
-\item[strip] No stripping of debug symbols from files to be installed may be 
performed.
+\item[strip] No stripping of debug symbols from files to be installed may be 
performed. In EAPIs
+listed in table~\ref{tab:dostrip} as supporting controllable stripping, 
this behaviour may be
+altered by the \t{dostrip} command.
 \item[userpriv] The package manager may not drop root privileges when building 
the package.
 \item[test] The \t{src_test} phase must not be run.
 \end{description}

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 5fb2568..6a2cab7 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -287,6 +287,12 @@ Controllable compression & \compactfeatureref{docompress} &
 \t{docompress} & \compactfeatureref{docompress} &
 No & Yes & Yes & Yes & Yes \\
 
+Controllable stripping & \compactfeatureref{dostrip} &
+No & No & No & No & Yes \\
+
+\t{dostrip} & \compactfeatureref{dostrip} &
+No & No & No & No & Yes \\
+
 \t{use_with} empty third arg & \compactfeatureref{use-with} &
 No & Yes & Yes & Yes & Yes \\
 
@@ -477,6 +483,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{eqawarn}, \featureref{eqawarn}.
 \item \t{die} is guaranteed to work in a subshell, \featureref{subshell-die}.
 \item \t{domo} installs to \t{/usr}, \featureref{domo-path}.
+\item Controllable stripping and \t{dostrip}, \featureref{dostrip}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index b0ed22e..dd0b02d 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -830,6 +830,68 @@ in table~\ref{tab:compression-table} as supporting 
\t{docompress}.
 \end{tabular}
 \end{centertable}
 
+\subsection{Commands affecting stripping of symbols}
+
+\featurelabel{dostrip} In EAPIs listed in table~\ref{tab:dostrip} as 
supporting controllable
+stripping of symbols, the package manager may strip a subset of the files 
under the \t{ED}
+directory. To control which files may or may not be stripped, the package 
manager shall maintain
+two lists:
+
+\begin{compactitem}
+\item An inclusion list. If the \t{RESTRICT} variable described in 
section~\ref{sec:restrict}
+enables a \t{strip} token, this list is initially empty; otherwise it 
initially contains \t{/}
+(the root path).
+\item An exclusion list, which initially is empty.
+\end{compactitem}
+
+Stripping of symbols shall be carried out after \t{src_install} has completed, 
and before the
+execution of any subsequent phase function. For each item in the inclusion 
list, pretend it has the
+value of the \t{ED} variable prepended, then:
+
+\begin{compactitem}
+\item If it is a directory, act as if every file or directory immediately 
under this directory
+were in the inclusion list.
+\item If the item is a file, it may be stripped unless it has been excluded as 
described below.
+\item If the item does not exist, it is ignored.
+\end{compactitem}
+
+Whether an item is to be excluded is determined as follows: For each item in 
the exclusion list,
+pretend it has the value of the \t{ED} variable prepended, then:
+
+\begin{compactitem}
+\item If it is a directory, act as if every file or directory immediately 
under this directory
+were in the exclusion list.
+\item If the item is a file, it shall not be stripped.
+\item If the item does not exist, it is ignored.
+\end{compactitem}
+
+The package manager shall take appropriate steps to ensure that its stripping 
mechanisms behave
+sensibly even if an item is listed in the inclusion list multiple times or if 
an item is a symlink.
+
+The following command may be used in \t{src_install} to alter these lists. It 
is an error to call
+this function from any other phase.
+
+\begin{description}
+\item[dostrip] If the first argument is \t{-x}, add each of its subsequent 
arguments to the
+exclusion list. Otherwise, add each argument to the inclusion list. Only 
available in EAPIs
+listed in table~\ref{tab:dostrip} as supporting \t{dostrip}.

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

2018-02-24 Thread Ulrich Müller
commit: c338011544c5745bc373141bcac536c1b67faacb
Author: James Le Cuirot  gentoo  org>
AuthorDate: Sun Sep 17 21:23:58 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Feb 24 12:55:24 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=c3380115

EAPI 7 has SYSROOT and ESYSROOT

Bug: https://bugs.gentoo.org/317337

 eapi-differences.tex |  4 
 ebuild-env-vars.tex  | 34 +-
 2 files changed, 29 insertions(+), 9 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 21411eb..9c769b5 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -155,6 +155,9 @@ Parallel tests & \compactfeatureref{parallel-tests} &
 \t{ECLASSDIR} & \compactfeatureref{eclassdir} &
 Yes & Yes & Yes & Yes & No \\
 
+\t{SYSROOT}, \t{ESYSROOT} & \compactfeatureref{sysroot} &
+No & No & No & No & Yes \\
+
 \t{DESTTREE} & \compactfeatureref{desttree} &
 Yes & Yes & Yes & Yes & No \\
 
@@ -420,6 +423,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{ECLASSDIR} is gone, \featureref{eclassdir}.
 \item \t{DESTTREE} is gone, \featureref{desttree}.
 \item \t{INSDESTTREE} is gone, \featureref{insdesttree}.
+\item \t{SYSROOT} and \t{ESYSROOT}, \featureref{sysroot}.
 \item \t{ROOT}, \t{EROOT}, \t{D}, \t{ED} no longer end with a trailing slash,
 \featureref{trailing-slash}.
 \end{compactitem}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 27417bf..1e34488 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -132,6 +132,18 @@ variable.
 for convenience. See also the \t{EPREFIX} variable. Only for EAPIs listed 
in
 table~\ref{tab:offset-env-vars-table} as supporting \t{EROOT}\@. The 
presence of a trailing
 slash is EAPI dependent as listed in table~\ref{tab:trailing-slash}. \\
+\t{SYSROOT} &
+\t{src_*} &
+No &
+\featurelabel{sysroot} The absolute path to the root directory containing 
build dependencies
+satisfied by \t{DEPEND}\@. Only for EAPIs listed in 
table~\ref{tab:added-env-vars-table}
+as supporting \t{SYSROOT}. \\
+\t{ESYSROOT} &
+\t{src_*} &
+No &
+Contains the concatenation of the paths in the \t{SYSROOT} and \t{EPREFIX} 
variables,
+for convenience. See also the \t{EPREFIX} variable. Only for EAPIs listed
+in table~\ref{tab:offset-env-vars-table} as supporting \t{ESYSROOT}. \\
 \t{T} &
 All &
 Partially\footnote{Consistent and preserved across a single connected 
sequence of install or
@@ -244,17 +256,19 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various added env variables}
 \label{tab:added-env-vars-table}
-\begin{tabular}{l}
+\begin{tabular}{ll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{c}{\textbf{\t{MERGE_TYPE}?}} &
   \multicolumn{1}{P{6em}}{\textbf{\t{REPLACING_VERSIONS}?}} &
   \multicolumn{1}{P{6em}}{\textbf{\t{REPLACED_BY_VERSION}?}} &
-  \multicolumn{1}{P{6em}}{\textbf{\t{EBUILD_PHASE_FUNC}?}} \\
+  \multicolumn{1}{P{6em}}{\textbf{\t{EBUILD_PHASE_FUNC}?}} &
+  \multicolumn{1}{c}{\textbf{\t{SYSROOT}?}} \\
   \midrule
-  0, 1, 2, 3& No  & No  & No  & No  \\
-  4 & Yes & Yes & Yes & No  \\
-  5, 6, 7   & Yes & Yes & Yes & Yes \\
+  0, 1, 2, 3& No  & No  & No  & No  & No  \\
+  4 & Yes & Yes & Yes & No  & No  \\
+  5, 6  & Yes & Yes & Yes & Yes & No  \\
+  7 & Yes & Yes & Yes & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -282,15 +296,17 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting offset-prefix env variables}
 \label{tab:offset-env-vars-table}
-\begin{tabular}{}
+\begin{tabular}{l}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{c}{\textbf{\t{EPREFIX}?}} &
   \multicolumn{1}{c}{\textbf{\t{EROOT}?}} &
-  \multicolumn{1}{c}{\textbf{\t{ED}?}} \\
+  \multicolumn{1}{c}{\textbf{\t{ED}?}} &
+  \multicolumn{1}{c}{\textbf{\t{ESYSROOT}?}} \\
   \midrule
-  0, 1, 2   & No  & No  & No  \\
-  3, 4, 5, 6, 7 & Yes & Yes & Yes \\
+  0, 1, 2   & No  & No  & No  & No  \\
+  3, 4, 5, 6& Yes & Yes & Yes & No  \\
+  7 & Yes & Yes & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2018-02-24 Thread Ulrich Müller
commit: ed38165fb16dfbb7fed458d63530382d59643493
Author: Michał Górny  gentoo  org>
AuthorDate: Thu Sep 28 16:20:11 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Feb 24 12:55:24 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=ed38165f

EAPI 7 no longer adds trailing slash to ROOT, EROOT, D, ED.

Bug: https://bugs.gentoo.org/465772

 eapi-differences.tex |  5 +
 ebuild-env-vars.tex  | 58 ++--
 2 files changed, 52 insertions(+), 11 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 283891b..21411eb 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -185,6 +185,9 @@ Profile \t{IUSE} injection & 
\compactfeatureref{profile-iuse-inject} &
 \t{EPREFIX}, \t{ED}, \t{EROOT} & \compactfeatureref{offset-prefix-vars} &
 * & Yes & Yes & Yes & Yes \\
 
+Trailing slash in \t{D} etc. & \compactfeatureref{trailing-slash} &
+Yes & Yes & Yes & Yes & No \\
+
 \t{find} is GNU? & \compactfeatureref{gnu-find} &
 Undefined & Undefined & Yes & Yes & Yes \\
 
@@ -417,6 +420,8 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{ECLASSDIR} is gone, \featureref{eclassdir}.
 \item \t{DESTTREE} is gone, \featureref{desttree}.
 \item \t{INSDESTTREE} is gone, \featureref{insdesttree}.
+\item \t{ROOT}, \t{EROOT}, \t{D}, \t{ED} no longer end with a trailing slash,
+\featureref{trailing-slash}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 2d79f20..27417bf 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -123,14 +123,15 @@ variable.
The absolute path to the root directory into which the package is to be 
merged.  Phases which run
with full filesystem access must not touch any files outside of the 
directory given in
\t{ROOT}\@. Also of note is that in a cross-compiling environment, binaries 
inside of \t{ROOT}
-   will not be executable on the build machine, so ebuilds must not call them. 
\t{ROOT} must be
-   non-empty and end in a trailing slash. \\
+   will not be executable on the build machine, so ebuilds must not call them. 
The presence of
+   a trailing slash is EAPI dependent as listed in 
table~\ref{tab:trailing-slash}. \\
 \t{EROOT} &
 \t{pkg_*} &
 No &
-Contains the path \t{\$\{ROOT\%/\}\$\{EPREFIX\}/} for convenience. See 
also the
-\t{EPREFIX} variable. Only for EAPIs listed in 
table~\ref{tab:offset-env-vars-table} as
-supporting \t{EROOT}. \\
+Contains the concatenation of the paths in the \t{ROOT} and \t{EPREFIX} 
variables,
+for convenience. See also the \t{EPREFIX} variable. Only for EAPIs listed 
in
+table~\ref{tab:offset-env-vars-table} as supporting \t{EROOT}\@. The 
presence of a trailing
+slash is EAPI dependent as listed in table~\ref{tab:trailing-slash}. \\
 \t{T} &
 All &
 Partially\footnote{Consistent and preserved across a single connected 
sequence of install or
@@ -161,18 +162,21 @@ variable.
 \t{src_install} &
 No &
 Contains the full path to the image directory into which the package 
should be installed.
-Must be non-empty and end in a trailing slash. \\
+The presence of a trailing slash is EAPI dependent as listed in 
table~\ref{tab:trailing-slash}.
+\\
 \t{D} (continued) &
 \t{pkg_preinst}, \t{pkg_postinst} &
 Yes &
-Contains the full path to the image that is about to be or has just been 
merged. Must be
-non-empty and end in a trailing slash. \\
+Contains the full path to the image that is about to be or has just been 
merged.
+The presence of a trailing slash is EAPI dependent as listed in 
table~\ref{tab:trailing-slash}.
+\\
 \t{ED} &
 \t{src_install}, \t{pkg_preinst}, \t{pkg_postinst} &
 See \t{D} &
-Contains the path \t{\$\{D\%/\}\$\{EPREFIX\}/} for convenience. See also 
the
-\t{EPREFIX} variable. Only for EAPIs listed in 
table~\ref{tab:offset-env-vars-table} as
-supporting \t{ED}. \\
+Contains the concatenation of the paths in the \t{D} and \t{EPREFIX} 
variables,
+for convenience. See also the \t{EPREFIX} variable. Only for EAPIs listed 
in
+table~\ref{tab:offset-env-vars-table} as supporting \t{ED}\@. The presence 
of a trailing slash
+is EAPI dependent as listed in table~\ref{tab:trailing-slash}. \\
 \t{DESTTREE} &
 \t{src_install} &
 No &
@@ -433,6 +437,38 @@ behaviour of offset-prefix aware and agnostic is the same 
when \t{EPREFIX} is se
 string in offset-prefix aware EAPIs. The latter do have the variables \t{ED} 
and \t{EROOT} properly
 set, though.
 
+\subsection{Path variables and trailing slash}
+\label{sec:trailing-slash}
+
+Unless specified otherwise, the paths provided through package manager 
variables do not end with
+a trailing slash and cannot be empty. A few exceptions to that rule are listed
+in table~\ref{tab:trailing-slash} along with applicable EAPIs.
+
+For EAPIs where those 

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

2018-02-24 Thread Ulrich Müller
commit: f93f456838edc1206228e98fbdaed0281bbca50e
Author: Michał Górny  gentoo  org>
AuthorDate: Fri Sep 29 13:41:52 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Feb 24 12:55:24 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=f93f4568

EAPI 7: domo installs to /usr.

Bug: https://bugs.gentoo.org/595924

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index ddf480e..5fb2568 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -275,6 +275,9 @@ Output commands use stdout & 
\compactfeatureref{output-no-stdout} &
 \t{doman -i18n} precedence & \compactfeatureref{doman-langs} &
 * & Yes & Yes & Yes & Yes \\
 
+\t{domo} destination path & \compactfeatureref{domo-path} &
+\t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & 
\t{\$\{DESTTREE\}} & \t{/usr} \\
+
 \t{new*} support stdin & \compactfeatureref{newfoo-stdin} &
 No & No & Yes & Yes & Yes \\
 
@@ -473,6 +476,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item Output commands no longer use stdout, \featureref{output-no-stdout}.
 \item \t{eqawarn}, \featureref{eqawarn}.
 \item \t{die} is guaranteed to work in a subshell, \featureref{subshell-die}.
+\item \t{domo} installs to \t{/usr}, \featureref{domo-path}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 0a0997a..b0ed22e 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -592,11 +592,12 @@ can be extended or reduced (see below). The options that 
can be passed to \t{doh
 the empty string. In EAPIs specified by table~\ref{tab:doman-table}, the 
\t{-i18n} option takes
 precedence over the language code in the filename.
 
-\item[domo] Installs the given \t{.mo} files with file mode \t{0644} into the 
appropriate
-subdirectory of \t{DESTTREE\slash share\slash locale}, generated by taking 
the basename of the
-file, removing the \t{.*} suffix, and appending \t{/LC_MESSAGES}\@. The 
name of the installed
-files is the package name with \t{.mo} appended. Failure behaviour is EAPI 
dependent as per
-section~\ref{sec:failure-behaviour}.
+\item[domo] \featurelabel{domo-path} Installs the given \t{.mo} files with 
file mode \t{0644} into
+the appropriate subdirectory of the locale tree, generated by taking the 
basename of the file,
+removing the \t{.*} suffix, and appending \t{/LC_MESSAGES}\@. The name of 
the installed files
+is the package name with \t{.mo} appended. Failure behaviour is EAPI 
dependent as per
+section~\ref{sec:failure-behaviour}. The locale tree location is EAPI 
dependent as per
+table~\ref{tab:domo-path}.
 
 \item[dosbin] As \t{dobin}, but installs to \t{DESTTREE/sbin}.
 
@@ -716,6 +717,20 @@ can be extended or reduced (see below). The options that 
can be passed to \t{doh
 \end{tabular}
 \end{centertable}
 
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{\t{domo} destination path in EAPIs}
+\label{tab:domo-path}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Destination path}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6 & \t{\$\{DESTTREE\}/share/locale} \\
+  7   & \t{/usr/share/locale} \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \subsection{Commands affecting install destinations}
 The following commands are used to set the various destination trees, all 
relative to \t{\$\{ED\}} in
 offset-prefix aware EAPIs and relative to \t{\$\{D\}} in offset-prefix 
agnostic EAPIs, used by the



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

2018-02-24 Thread Ulrich Müller
commit: 26c4b5e6329cef8bbc24d80dff159faa0a10aa5e
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun Nov 15 17:20:13 2015 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sat Feb 24 12:55:24 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=26c4b5e6

EAPI 7: dohtml banned.

Bug: https://bugs.gentoo.org/520546

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index f47a8c6..12ece88 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -221,6 +221,9 @@ Most utilities die & \compactfeatureref{die-on-failure} &
 \t{einstall} & \compactfeatureref{banned-commands} &
 Yes & Yes & Yes & Banned & Banned \\
 
+\t{dohtml} & \compactfeatureref{banned-commands} &
+Yes & Yes & Yes & Yes & Banned \\
+
 Query command options & \compactfeatureref{pm-query-options} &
 None & None & \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, 
\t{-r} \\
 
@@ -446,6 +449,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{ENV_UNSET}, \featureref{env-unset}.
 \item \t{patch} is compatible with GNU patch 2.7, \featureref{gnu-patch}.
 \item \t{nonfatal} is both a shell function and an external command, 
\featureref{nonfatal}.
+\item \t{dohtml} banned, \featureref{banned-commands}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index fdf80e0..9e7390c 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -56,18 +56,20 @@ called, the package manager must abort the build process 
indicating an error.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Banned commands}
 \label{tab:banned-commands-table}
-\begin{tabular}{}
+\begin{tabular}{l}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{3}{c}{\textbf{Command banned?}} \\
+  \multicolumn{4}{c}{\textbf{Command banned?}} \\
   \multicolumn{1}{c}{} &
   \multicolumn{1}{c}{\textbf{\t{dohard}}} &
   \multicolumn{1}{c}{\textbf{\t{dosed}}} &
-  \multicolumn{1}{c}{\textbf{\t{einstall}}} \\
+  \multicolumn{1}{c}{\textbf{\t{einstall}}} &
+  \multicolumn{1}{c}{\textbf{\t{dohtml}}} \\
   \midrule
-  0, 1, 2, 3& No  & No  & No  \\
-  4, 5  & Yes & Yes & No  \\
-  6, 7  & Yes & Yes & Yes \\
+  0, 1, 2, 3& No  & No  & No  & No  \\
+  4, 5  & Yes & Yes & No  & No  \\
+  6 & Yes & Yes & Yes & No  \\
+  7 & Yes & Yes & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -457,6 +459,8 @@ can be extended or reduced (see below). The options that 
can be passed to \t{doh
 offset-prefix.
 \end{description}
 
+In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as per
+section~\ref{sec:banned-commands}.
 Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
 
 It is undefined whether a failure shall occur if \t{-r} is not specified 
and a directory is



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

2018-02-18 Thread Ulrich Müller
commit: 733350875b1559ce66cd917e380f2b27da3f2110
Author: Michał Górny  gentoo  org>
AuthorDate: Wed Sep 27 21:23:22 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Feb 18 13:35:54 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=73335087

EAPI 7 has version manipulation and comparison functions

Bug: https://bugs.gentoo.org/482170

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 6a2cab7..8deba55 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -302,6 +302,9 @@ Controllable stripping & \compactfeatureref{dostrip} &
 \t{in_iuse} & \compactfeatureref{in-iuse} &
 No & No & No & Yes & Yes \\
 
+\t{ver_*} commands & \compactfeatureref{ver-commands} &
+No & No & No & No & Yes \\
+
 \t{unpack} absolute paths & \compactfeatureref{unpack-absolute} &
 No & No & No & Yes & Yes \\
 
@@ -484,6 +487,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{die} is guaranteed to work in a subshell, \featureref{subshell-die}.
 \item \t{domo} installs to \t{/usr}, \featureref{domo-path}.
 \item Controllable stripping and \t{dostrip}, \featureref{dostrip}.
+\item Version manipulation and comparison commands, \featureref{ver-commands}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 5ce9569..bb244c8 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -948,6 +948,86 @@ These functions check whitespace-separated lists for a 
particular value.
 \item[hasq] Deprecated synonym for \t{has}.
 \end{description}
 
+\subsection{Version manipulation and comparison commands}
+\featurelabel{ver-commands}
+These commands provide utilities for working with version strings. Their 
availability per EAPI is
+listed in table~\ref{tab:version-commands}.
+
+For the purpose of version manipulation commands, the specification provides a 
method for splitting
+an arbitrary version string (not necessarily conforming to 
section~\ref{sec:version-spec}) into
+a series of version components and version separators.
+
+A version component consists either purely of digits (\t{[0-9]+}) or purely of 
uppercase and
+lowercase ASCII letters (\t{[A-Za-z]+}). A version separator is either a 
string of any other
+characters (\t{[\textasciicircum A-Za-z0-9]}) or it occurs at the transition 
between a sequence
+of digits and a sequence of letters, or vice versa. In the latter case, the 
version separator is
+an empty string.
+
+The version string is processed left-to-right, with the successive version 
components being assigned
+successive indices starting with 1. The separator following a version 
component is assigned
+the index of the preceding version component. If the first version component 
is preceded by
+a non-empty string of version separator characters, this separator is assigned 
the index 0.
+
+The version components are presumed present if not empty. The version 
separators between version
+components are always presumed present, even if they are empty. The version 
separators preceding
+the first version component and following the last are only presumed present 
if they are not empty.
+
+Whenever the commands support ranges, the range is specified as a non-negative 
integer, optionally
+followed by a hyphen (\t{-}), which in turn is optionally followed by another 
non-negative integer.
+
+A single integer specifies a single component or separator index. An integer 
followed by a hyphen
+specifies all components or separators starting with the one at the specified 
index. Two integers
+separated by a hyphen specify a range of versions starting at the index 
specified by the first
+and ending at the second, inclusively.
+
+\begin{description}
+\item[ver_cut] Takes a range as the first argument, and optionally a version 
string as the second.
+Prints a substring of the version string starting at the version component 
specified as start
+of the range and ending at the version component specified as end of the 
range. If the version
+string is not specified, \t{\$\{PVR\}} is used.
+
+If the range spans outside the present version components, the missing 
components and separators
+are presumed empty. In particular, the range starting at zero includes the 
zeroth version
+separator if present, and the range spanning past the last version 
component includes the suffix
+following it if present. A range that does not intersect with any present 
version components
+yields an empty string.
+
+\item[ver_rs] Takes one or more pairs of arguments, optionally followed by a 
version string.
+Every argument pair specifies a range and a replacement string. Prints a 
version string after
+performing the specified separator substitutions. If the version string is 
not specified,
+\t{\$\{PVR\}} is used.
+
+

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

2018-02-18 Thread Ulrich Müller
commit: 3222485957d109257f3b727b9d6d96a319c8c35d
Author: Michał Górny  gentoo  org>
AuthorDate: Fri Sep 29 13:41:52 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Feb 18 13:35:54 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=32224859

EAPI 7: domo installs to /usr.

Bug: https://bugs.gentoo.org/595924

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index ddf480e..5fb2568 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -275,6 +275,9 @@ Output commands use stdout & 
\compactfeatureref{output-no-stdout} &
 \t{doman -i18n} precedence & \compactfeatureref{doman-langs} &
 * & Yes & Yes & Yes & Yes \\
 
+\t{domo} destination path & \compactfeatureref{domo-path} &
+\t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & 
\t{\$\{DESTTREE\}} & \t{/usr} \\
+
 \t{new*} support stdin & \compactfeatureref{newfoo-stdin} &
 No & No & Yes & Yes & Yes \\
 
@@ -473,6 +476,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item Output commands no longer use stdout, \featureref{output-no-stdout}.
 \item \t{eqawarn}, \featureref{eqawarn}.
 \item \t{die} is guaranteed to work in a subshell, \featureref{subshell-die}.
+\item \t{domo} installs to \t{/usr}, \featureref{domo-path}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 91c19b6..c02f136 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -588,11 +588,12 @@ can be extended or reduced (see below). The options that 
can be passed to \t{doh
 the empty string. In EAPIs specified by table~\ref{tab:doman-table}, the 
\t{-i18n} option takes
 precedence over the language code in the filename.
 
-\item[domo] Installs the given \t{.mo} files with file mode \t{0644} into the 
appropriate
-subdirectory of \t{DESTTREE\slash share\slash locale}, generated by taking 
the basename of the
-file, removing the \t{.*} suffix, and appending \t{/LC_MESSAGES}\@. The 
name of the installed
-files is the package name with \t{.mo} appended. Failure behaviour is EAPI 
dependent as per
-section~\ref{sec:failure-behaviour}.
+\item[domo] \featurelabel{domo-path} Installs the given \t{.mo} files with 
file mode \t{0644} into
+the appropriate subdirectory of the locale tree, generated by taking the 
basename of the file,
+removing the \t{.*} suffix, and appending \t{/LC_MESSAGES}\@. The name of 
the installed files
+is the package name with \t{.mo} appended. Failure behaviour is EAPI 
dependent as per
+section~\ref{sec:failure-behaviour}. The locale tree location is EAPI 
dependent as per
+table~\ref{tab:domo-path}.
 
 \item[dosbin] As \t{dobin}, but installs to \t{DESTTREE/sbin}.
 
@@ -712,6 +713,20 @@ can be extended or reduced (see below). The options that 
can be passed to \t{doh
 \end{tabular}
 \end{centertable}
 
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{\t{domo} destination path in EAPIs}
+\label{tab:domo-path}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Destination path}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6 & \t{\$\{DESTTREE\}/share/locale} \\
+  7   & \t{/usr/share/locale} \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \subsection{Commands affecting install destinations}
 The following commands are used to set the various destination trees, all 
relative to \t{\$\{ED\}} in
 offset-prefix aware EAPIs and relative to \t{\$\{D\}} in offset-prefix 
agnostic EAPIs, used by the



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

2018-02-18 Thread Ulrich Müller
commit: 1752fe99b83269bf7a6e7c3b19d68a039d25840a
Author: Michał Górny  gentoo  org>
AuthorDate: Fri Sep 29 14:02:49 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Feb 18 13:35:54 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=1752fe99

EAPI 7 bans dolib and libopts.

Bug: https://bugs.gentoo.org/630416

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 12ece88..7bddf41 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -224,6 +224,12 @@ Most utilities die & \compactfeatureref{die-on-failure} &
 \t{dohtml} & \compactfeatureref{banned-commands} &
 Yes & Yes & Yes & Yes & Banned \\
 
+\t{dolib} & \compactfeatureref{banned-commands} &
+Yes & Yes & Yes & Yes & Banned \\
+
+\t{libopts} & \compactfeatureref{banned-commands} &
+Yes & Yes & Yes & Yes & Banned \\
+
 Query command options & \compactfeatureref{pm-query-options} &
 None & None & \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, 
\t{-r} \\
 
@@ -450,6 +456,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{patch} is compatible with GNU patch 2.7, \featureref{gnu-patch}.
 \item \t{nonfatal} is both a shell function and an external command, 
\featureref{nonfatal}.
 \item \t{dohtml} banned, \featureref{banned-commands}.
+\item \t{dolib} and \t{libopts} banned, \featureref{banned-commands}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 3ce2611..ea002f2 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -56,20 +56,22 @@ called, the package manager must abort the build process 
indicating an error.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Banned commands}
 \label{tab:banned-commands-table}
-\begin{tabular}{l}
+\begin{tabular}{lll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{4}{c}{\textbf{Command banned?}} \\
+  \multicolumn{6}{c}{\textbf{Command banned?}} \\
   \multicolumn{1}{c}{} &
   \multicolumn{1}{c}{\textbf{\t{dohard}}} &
   \multicolumn{1}{c}{\textbf{\t{dosed}}} &
   \multicolumn{1}{c}{\textbf{\t{einstall}}} &
-  \multicolumn{1}{c}{\textbf{\t{dohtml}}} \\
+  \multicolumn{1}{c}{\textbf{\t{dohtml}}} &
+  \multicolumn{1}{c}{\textbf{\t{dolib}}} &
+  \multicolumn{1}{c}{\textbf{\t{libopts}}} \\
   \midrule
-  0, 1, 2, 3& No  & No  & No  & No  \\
-  4, 5  & Yes & Yes & No  & No  \\
-  6 & Yes & Yes & Yes & No  \\
-  7 & Yes & Yes & Yes & Yes \\
+  0, 1, 2, 3& No  & No  & No  & No  & No  & No  \\
+  4, 5  & Yes & Yes & No  & No  & No  & No  \\
+  6 & Yes & Yes & Yes & No  & No  & No  \\
+  7 & Yes & Yes & Yes & Yes & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -485,7 +487,9 @@ can be extended or reduced (see below). The options that 
can be passed to \t{doh
 \item[dolib.so] As for \t{dolib.a} except each file is installed with mode 
\t{0755}.
 
 \item[dolib] As for \t{dolib.a} except that the default install mode can be 
overriden with
-the \t{install} options set by the most recent \t{libopts} call.
+the \t{install} options set by the most recent \t{libopts} call. In EAPIs 
listed
+in table~\ref{tab:banned-commands-table}, this command is banned as per
+section~\ref{sec:banned-commands}.
 
 \begin{algorithm}
 \caption{Determining the library directory} \label{alg:ebuild-libdir}
@@ -681,6 +685,8 @@ has returned.
 \item[exeopts] Sets the options passed by \t{doexe} et al.\ to the \t{install} 
command.
 
 \item[libopts] Sets the options passed by \t{dolib} et al.\ to the \t{install} 
command.
+In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as
+per section~\ref{sec:banned-commands}.
 
 \end{description}
 



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

2018-02-18 Thread Ulrich Müller
commit: 956e8c51addcf872ecbb9da2a75e60d5c86da682
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun Oct 29 09:30:43 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Feb 18 13:35:54 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=956e8c51

EAPI 7 has controllable stripping and dostrip.

Bug: https://bugs.gentoo.org/203891

 dependencies.tex |  4 +++-
 eapi-differences.tex |  7 ++
 pkg-mgr-commands.tex | 62 
 3 files changed, 72 insertions(+), 1 deletion(-)

diff --git a/dependencies.tex b/dependencies.tex
index 696f478..deede34 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -506,7 +506,9 @@ The following tokens are permitted inside \t{RESTRICT}:
 be checked when fetching.
 \item[fetch] The package's \t{SRC_URI} entries may not be downloaded 
automatically. If
 entries are not available, \t{pkg_nofetch} is called. Implies \t{mirror}.
-\item[strip] No stripping of debug symbols from files to be installed may be 
performed.
+\item[strip] No stripping of debug symbols from files to be installed may be 
performed. In EAPIs
+listed in table~\ref{tab:dostrip} as supporting controllable stripping, 
this behaviour may be
+altered by the \t{dostrip} command.
 \item[userpriv] The package manager may not drop root privileges when building 
the package.
 \item[test] The \t{src_test} phase must not be run.
 \end{description}

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 5fb2568..6a2cab7 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -287,6 +287,12 @@ Controllable compression & \compactfeatureref{docompress} &
 \t{docompress} & \compactfeatureref{docompress} &
 No & Yes & Yes & Yes & Yes \\
 
+Controllable stripping & \compactfeatureref{dostrip} &
+No & No & No & No & Yes \\
+
+\t{dostrip} & \compactfeatureref{dostrip} &
+No & No & No & No & Yes \\
+
 \t{use_with} empty third arg & \compactfeatureref{use-with} &
 No & Yes & Yes & Yes & Yes \\
 
@@ -477,6 +483,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{eqawarn}, \featureref{eqawarn}.
 \item \t{die} is guaranteed to work in a subshell, \featureref{subshell-die}.
 \item \t{domo} installs to \t{/usr}, \featureref{domo-path}.
+\item Controllable stripping and \t{dostrip}, \featureref{dostrip}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index c02f136..0e4cd60 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -826,6 +826,68 @@ in table~\ref{tab:compression-table} as supporting 
\t{docompress}.
 \end{tabular}
 \end{centertable}
 
+\subsection{Commands affecting stripping of symbols}
+
+\featurelabel{dostrip} In EAPIs listed in table~\ref{tab:dostrip} as 
supporting controllable
+stripping of symbols, the package manager may strip a subset of the files 
under the \t{ED}
+directory. To control which files may or may not be stripped, the package 
manager shall maintain
+two lists:
+
+\begin{compactitem}
+\item An inclusion list. If the \t{RESTRICT} variable described in 
section~\ref{sec:restrict}
+enables a \t{strip} token, this list is initially empty; otherwise it 
initially contains \t{/}
+(the root path).
+\item An exclusion list, which initially is empty.
+\end{compactitem}
+
+Stripping of symbols shall be carried out after \t{src_install} has completed, 
and before the
+execution of any subsequent phase function. For each item in the inclusion 
list, pretend it has the
+value of the \t{ED} variable prepended, then:
+
+\begin{compactitem}
+\item If it is a directory, act as if every file or directory immediately 
under this directory
+were in the inclusion list.
+\item If the item is a file, it may be stripped unless it has been excluded as 
described below.
+\item If the item does not exist, it is ignored.
+\end{compactitem}
+
+Whether an item is to be excluded is determined as follows: For each item in 
the exclusion list,
+pretend it has the value of the \t{ED} variable prepended, then:
+
+\begin{compactitem}
+\item If it is a directory, act as if every file or directory immediately 
under this directory
+were in the exclusion list.
+\item If the item is a file, it shall not be stripped.
+\item If the item does not exist, it is ignored.
+\end{compactitem}
+
+The package manager shall take appropriate steps to ensure that its stripping 
mechanisms behave
+sensibly even if an item is listed in the inclusion list multiple times or if 
an item is a symlink.
+
+The following command may be used in \t{src_install} to alter these lists. It 
is an error to call
+this function from any other phase.
+
+\begin{description}
+\item[dostrip] If the first argument is \t{-x}, add each of its subsequent 
arguments to the
+exclusion list. Otherwise, add each argument to the inclusion list. Only 
available in EAPIs
+listed in table~\ref{tab:dostrip} as supporting \t{dostrip}.

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

2018-02-18 Thread Ulrich Müller
commit: 31b270ea4638bd18917a80c5615f1082ad91dd9c
Author: Michał Górny  gentoo  org>
AuthorDate: Thu Sep 28 16:20:11 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Feb 18 13:35:54 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=31b270ea

EAPI 7 no longer adds trailing slash to ROOT, EROOT, D, ED.

Bug: https://bugs.gentoo.org/465772

 eapi-differences.tex |  5 +
 ebuild-env-vars.tex  | 58 ++--
 2 files changed, 52 insertions(+), 11 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 283891b..21411eb 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -185,6 +185,9 @@ Profile \t{IUSE} injection & 
\compactfeatureref{profile-iuse-inject} &
 \t{EPREFIX}, \t{ED}, \t{EROOT} & \compactfeatureref{offset-prefix-vars} &
 * & Yes & Yes & Yes & Yes \\
 
+Trailing slash in \t{D} etc. & \compactfeatureref{trailing-slash} &
+Yes & Yes & Yes & Yes & No \\
+
 \t{find} is GNU? & \compactfeatureref{gnu-find} &
 Undefined & Undefined & Yes & Yes & Yes \\
 
@@ -417,6 +420,8 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{ECLASSDIR} is gone, \featureref{eclassdir}.
 \item \t{DESTTREE} is gone, \featureref{desttree}.
 \item \t{INSDESTTREE} is gone, \featureref{insdesttree}.
+\item \t{ROOT}, \t{EROOT}, \t{D}, \t{ED} no longer end with a trailing slash,
+\featureref{trailing-slash}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 2d79f20..27417bf 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -123,14 +123,15 @@ variable.
The absolute path to the root directory into which the package is to be 
merged.  Phases which run
with full filesystem access must not touch any files outside of the 
directory given in
\t{ROOT}\@. Also of note is that in a cross-compiling environment, binaries 
inside of \t{ROOT}
-   will not be executable on the build machine, so ebuilds must not call them. 
\t{ROOT} must be
-   non-empty and end in a trailing slash. \\
+   will not be executable on the build machine, so ebuilds must not call them. 
The presence of
+   a trailing slash is EAPI dependent as listed in 
table~\ref{tab:trailing-slash}. \\
 \t{EROOT} &
 \t{pkg_*} &
 No &
-Contains the path \t{\$\{ROOT\%/\}\$\{EPREFIX\}/} for convenience. See 
also the
-\t{EPREFIX} variable. Only for EAPIs listed in 
table~\ref{tab:offset-env-vars-table} as
-supporting \t{EROOT}. \\
+Contains the concatenation of the paths in the \t{ROOT} and \t{EPREFIX} 
variables,
+for convenience. See also the \t{EPREFIX} variable. Only for EAPIs listed 
in
+table~\ref{tab:offset-env-vars-table} as supporting \t{EROOT}\@. The 
presence of a trailing
+slash is EAPI dependent as listed in table~\ref{tab:trailing-slash}. \\
 \t{T} &
 All &
 Partially\footnote{Consistent and preserved across a single connected 
sequence of install or
@@ -161,18 +162,21 @@ variable.
 \t{src_install} &
 No &
 Contains the full path to the image directory into which the package 
should be installed.
-Must be non-empty and end in a trailing slash. \\
+The presence of a trailing slash is EAPI dependent as listed in 
table~\ref{tab:trailing-slash}.
+\\
 \t{D} (continued) &
 \t{pkg_preinst}, \t{pkg_postinst} &
 Yes &
-Contains the full path to the image that is about to be or has just been 
merged. Must be
-non-empty and end in a trailing slash. \\
+Contains the full path to the image that is about to be or has just been 
merged.
+The presence of a trailing slash is EAPI dependent as listed in 
table~\ref{tab:trailing-slash}.
+\\
 \t{ED} &
 \t{src_install}, \t{pkg_preinst}, \t{pkg_postinst} &
 See \t{D} &
-Contains the path \t{\$\{D\%/\}\$\{EPREFIX\}/} for convenience. See also 
the
-\t{EPREFIX} variable. Only for EAPIs listed in 
table~\ref{tab:offset-env-vars-table} as
-supporting \t{ED}. \\
+Contains the concatenation of the paths in the \t{D} and \t{EPREFIX} 
variables,
+for convenience. See also the \t{EPREFIX} variable. Only for EAPIs listed 
in
+table~\ref{tab:offset-env-vars-table} as supporting \t{ED}\@. The presence 
of a trailing slash
+is EAPI dependent as listed in table~\ref{tab:trailing-slash}. \\
 \t{DESTTREE} &
 \t{src_install} &
 No &
@@ -433,6 +437,38 @@ behaviour of offset-prefix aware and agnostic is the same 
when \t{EPREFIX} is se
 string in offset-prefix aware EAPIs. The latter do have the variables \t{ED} 
and \t{EROOT} properly
 set, though.
 
+\subsection{Path variables and trailing slash}
+\label{sec:trailing-slash}
+
+Unless specified otherwise, the paths provided through package manager 
variables do not end with
+a trailing slash and cannot be empty. A few exceptions to that rule are listed
+in table~\ref{tab:trailing-slash} along with applicable EAPIs.
+
+For EAPIs where those 

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

2018-02-18 Thread Ulrich Müller
commit: 8fbdd07ea357df6ebf05e9b4190a05beeb0c7ebd
Author: Michał Górny  gentoo  org>
AuthorDate: Fri Sep 29 14:24:10 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Feb 18 13:35:54 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=8fbdd07e

EAPI 7 provides command fallback for nonfatal.

Bug: https://bugs.gentoo.org/622894

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 47c6950..f47a8c6 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -210,7 +210,7 @@ Most utilities die & \compactfeatureref{die-on-failure} &
 No & Yes & Yes & Yes & Yes \\
 
 \t{nonfatal} & \compactfeatureref{nonfatal} &
-No & Yes & Yes & Yes & Yes \\
+No & Yes & Yes & Yes & Function / external \\
 
 \t{dohard} & \compactfeatureref{banned-commands} &
 Yes & Banned & Banned & Banned & Banned \\
@@ -445,6 +445,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \t{-{}-host-root}, \featureref{pm-query-options}.
 \item \t{ENV_UNSET}, \featureref{env-unset}.
 \item \t{patch} is compatible with GNU patch 2.7, \featureref{gnu-patch}.
+\item \t{nonfatal} is both a shell function and an external command, 
\featureref{nonfatal}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 16b3aa4..2312f81 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -22,6 +22,10 @@ The following commands affect this behaviour:
 the build process due to a failure, instead a non-zero exit status shall 
be returned. Only in
 EAPIs listed in table~\ref{tab:commands-die-table} as supporting 
\t{nonfatal}.
 
+In EAPIs listed in table~\ref{tab:commands-die-table} as having 
\t{nonfatal} defined both
+as a shell function and as an external command, the package manager must 
provide both
+implementations to account for calling directly in ebuild scope or through 
\t{xargs}.
+
 Explicit \t{die} or \t{assert} commands only respect \t{nonfatal} when 
called with the \t{-n}
 option and in EAPIs supporting this option, see 
table~\ref{tab:nonfatal-die}.
 \end{description}
@@ -29,14 +33,16 @@ The following commands affect this behaviour:
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPI command failure behaviour}
 \label{tab:commands-die-table}
-\begin{tabular}{lll}
+\begin{tabular}{}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{1}{c}{\textbf{Command failure behaviour}} &
-  \multicolumn{1}{c}{\textbf{Supports \t{nonfatal}?}} \\
+  \multicolumn{1}{P{8em}}{\textbf{Command failure behaviour}} &
+  \multicolumn{1}{P{5em}}{\textbf{Supports \t{nonfatal}?}} &
+  \multicolumn{1}{P{12em}}{\textbf{\t{nonfatal} is both a function and an 
external command?}} \\
   \midrule
-  0, 1, 2, 3& Non-zero exit & No  \\
-  4, 5, 6, 7& Aborts& Yes \\
+  0, 1, 2, 3& Non-zero exit & No  & n/a \\
+  4, 5, 6   & Aborts& Yes & No  \\
+  7 & Aborts& Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2018-02-18 Thread Ulrich Müller
commit: e2c4c085730ea4a31af288cbb6578f8da1a426a4
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun Nov  5 16:08:23 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Feb 18 13:35:54 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=e2c4c085

pkg-mgr-commands.tex: Join docompress and dostrip sections.

 dependencies.tex |   4 +-
 pkg-mgr-commands.tex | 130 +++
 2 files changed, 49 insertions(+), 85 deletions(-)

diff --git a/dependencies.tex b/dependencies.tex
index deede34..7ae119b 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -507,8 +507,8 @@ The following tokens are permitted inside \t{RESTRICT}:
 \item[fetch] The package's \t{SRC_URI} entries may not be downloaded 
automatically. If
 entries are not available, \t{pkg_nofetch} is called. Implies \t{mirror}.
 \item[strip] No stripping of debug symbols from files to be installed may be 
performed. In EAPIs
-listed in table~\ref{tab:dostrip} as supporting controllable stripping, 
this behaviour may be
-altered by the \t{dostrip} command.
+listed in table~\ref{tab:staging-area-commands} as supporting controllable 
stripping, this
+behaviour may be altered by the \t{dostrip} command.
 \item[userpriv] The package manager may not drop root privileges when building 
the package.
 \item[test] The \t{src_test} phase must not be run.
 \end{description}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 0e4cd60..5ce9569 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -764,27 +764,25 @@ has returned.
 
 \end{description}
 
-\subsection{Commands affecting install compression}
+\subsection{Commands controlling manipulation of files in the staging area}
+These commands are used to control optional manipulations that the package 
manager may perform on
+files in the staging directory \t{ED}, like compressing files or stripping 
symbols from object
+files.
 
-\featurelabel{docompress} In EAPIs listed in table~\ref{tab:compression-table} 
as supporting
-controllable compression, the package manager may optionally compress a subset 
of the files under
-the \t{ED} directory. To control which directories may or may not be 
compressed, the package manager
-shall maintain two lists:
-
-\begin{compactitem}
-\item An inclusion list, which initially contains \t{/usr/share/doc}, 
\t{/usr/share/info} and
-\t{/usr/share/man}.
-\item An exclusion list, which initially contains 
\t{/usr/share/doc/\$\{PF\}/html}.
-\end{compactitem}
+For each of the operations mentioned below, the package manager shall maintain 
an inclusion list
+and an exclusion list, in order to control which directories and files the 
operation may or may not
+be performed upon. The initial contents of the two lists is specified below 
for each of the
+commands, respectively.
 
-The optional compression shall be carried out after \t{src_install} has 
completed, and before the
-execution of any subsequent phase function. For each item in the inclusion 
list, pretend it has the
-value of the \t{ED} variable prepended, then:
+Any of these operations shall be carried out after \t{src_install} has 
completed, and before the
+execution of any subsequent phase function. For each item in the inclusion 
list, pretend it has
+the value of the \t{ED} variable prepended, then:
 
 \begin{compactitem}
 \item If it is a directory, act as if every file or directory immediately 
under this directory
 were in the inclusion list.
-\item If the item is a file, it may be compressed unless it has been excluded 
as described below.
+\item If the item is a file, the operation may be performed on it, unless it 
has been excluded as
+described below.
 \item If the item does not exist, it is ignored.
 \end{compactitem}
 
@@ -794,96 +792,62 @@ pretend it has the value of the \t{ED} variable 
prepended, then:
 \begin{compactitem}
 \item If it is a directory, act as if every file or directory immediately 
under this directory
 were in the exclusion list.
-\item If the item is a file, it shall not be compressed.
+\item If the item is a file, the operation shall not be performed on it.
 \item If the item does not exist, it is ignored.
 \end{compactitem}
 
-The package manager shall take appropriate steps to ensure that its 
compression mechanisms behave
-sensibly even if an item is listed in the inclusion list multiple times, if an 
item is a symlink,
-or if a file is already compressed.
-
-The following commands may be used in \t{src_install} to alter these lists. It 
is an error to call
-any of these functions from any other phase.
-
-\begin{description}
-\item[docompress] If the first argument is \t{-x}, add each of its subsequent 
arguments to the
-exclusion list. Otherwise, add each argument to the inclusion list. Only 
available in EAPIs listed
-in table~\ref{tab:compression-table} as supporting \t{docompress}.
-\end{description}
-
-\ChangeWhenAddingAnEAPI{7}

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

2018-02-18 Thread Ulrich Müller
commit: 43cca722f6a71369009324a8f99f032fb00c1eb9
Author: Michał Górny  gentoo  org>
AuthorDate: Wed Oct  4 16:19:16 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Feb 18 13:35:54 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=43cca722

EAPI 7 has BDEPEND

Bug: https://bugs.gentoo.org/317337

 dependencies.tex | 33 ++---
 eapi-differences.tex |  4 
 ebuild-vars.tex  |  1 +
 eclasses.tex | 11 ++-
 metadata-cache.tex   |  3 ++-
 5 files changed, 43 insertions(+), 9 deletions(-)

diff --git a/dependencies.tex b/dependencies.tex
index 51c67a4..e53cff6 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -15,7 +15,7 @@
   None (ebuilds can rely only on the packages in the system~set) \\
   \addlinespace
   \t{src_unpack}, \t{src_prepare}, \t{src_configure}, \t{src_compile}, 
\t{src_test},
-  \t{src_install} & \t{DEPEND} \\
+  \t{src_install} & \t{DEPEND}, \t{BDEPEND} \\
   \addlinespace
   \t{pkg_preinst}, \t{pkg_postinst}, \t{pkg_prerm}, \t{pkg_postrm} &
   \t{RDEPEND} (unless the particular dependency results in a circular 
dependency, in which
@@ -38,6 +38,32 @@ There are three classes of dependencies supported by ebuilds:
 the package manager finishes the batch of installs.
 \end{compactitem}
 
+\featurelabel{bdepend} Additionally, in EAPIs listed in 
table~\ref{tab:depend-table}
+as supporting \t{BDEPEND}, the build dependencies are split into two 
subclasses:
+
+\begin{compactitem}
+\item \t{BDEPEND} build dependencies that are binary compatible with the 
native build system
+(\t{CBUILD}). The ebuild is allowed to call binary executables installed 
by this kind of
+dependency.
+\item \t{DEPEND} build dependencies that are binary compatible with the 
system being built
+(\t{CHOST}). The ebuild must not execute binary executables installed by 
this kind of
+dependency.
+\end{compactitem}
+
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPIs supporting additional dependency types}
+\label{tab:depend-table}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Supports \t{BDEPEND}?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6 & No  \\
+  7   & Yes \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 Table~\ref{tab:phase-function-dependency-classes} lists dependencies which 
must be satisfied before
 a particular phase function is executed.
 
@@ -51,7 +77,8 @@ The following elements are recognised in at least one class 
of specification. Al
 be surrounded on both sides by whitespace, except at the start and end of the 
string.
 
 \begin{compactitem}
-\item A package dependency specification. Permitted in \t{DEPEND}, 
\t{RDEPEND}, \t{PDEPEND}.
+\item A package dependency specification. Permitted in \t{DEPEND}, 
\t{BDEPEND}, \t{RDEPEND},
+\t{PDEPEND}.
 \item A URI, in the form \t{proto://host/path}. Permitted in \t{SRC_URI} and 
\t{HOMEPAGE}\@.
 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
@@ -69,7 +96,7 @@ 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{RDEPEND}, \t{PDEPEND}, \t{LICENSE}, 
\t{REQUIRED_USE}.
+Permitted in \t{DEPEND}, \t{BDEPEND}, \t{RDEPEND}, \t{PDEPEND}, 
\t{LICENSE}, \t{REQUIRED_USE}.
 \item \featurelabel{binding-any-of} A binding-any-of group, which has the same 
format as the any-of
 group, but begins with the string \t{||=} instead. Permitted in 
\t{DEPEND}, \t{RDEPEND} in EAPIs
 listed in table~\ref{tab:dep-groups} as supporting \t{||=} groups.

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 0f6371b..8f7db7e 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -77,6 +77,9 @@ Bash version & \compactfeatureref{bash-version} &
 \t{DEFINED_PHASES} & \compactfeatureref{defined-phases} &
 Optionally & Yes & Yes & Yes & Yes \\
 
+\t{BDEPEND} & \compactfeatureref{bdepend} &
+No & No & No & No & Yes \\
+
 Empty \t{||}, \t{\textasciicircum\textasciicircum} groups match &
 \compactfeatureref{empty-dep-groups} &
 Yes & Yes & Yes & Yes & No \\
@@ -427,6 +430,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{ROOT}, \t{EROOT}, \t{D}, \t{ED} no longer end with a trailing slash,
 \featureref{trailing-slash}.
 \item \t{econf} adds \t{-{}-with-sysroot}, \featureref{econf-options}.
+\item \t{BDEPEND}, \featureref{bdepend}.
 \end{compactitem}
 
 

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

2018-02-18 Thread Ulrich Müller
commit: 9ae037759543f74ba80b44f97475e48fc515fb99
Author: Ulrich Müller  gentoo  org>
AuthorDate: Tue Oct 31 18:19:03 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Feb 18 13:35:54 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=9ae03775

Trim the width of several tables.

tab:optional-vars-table: Reduce column separation very slightly
(by 0.1pt) to make the width of the table fit.

tab:added-env-vars-table was also too wide, which is fixed by reducing
the width of the paragraph type columns.

tab:econf-options-table: Change columns with overlong headers to
paragraph type, in order to allow line breaks.

 ebuild-env-vars.tex  | 8 
 ebuild-vars.tex  | 1 +
 pkg-mgr-commands.tex | 4 ++--
 3 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index c9ebf9b..7836bd9 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -266,10 +266,10 @@ variable.
 \begin{tabular}{lll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{1}{c}{\textbf{\t{MERGE_TYPE}?}} &
-  \multicolumn{1}{P{6em}}{\textbf{\t{REPLACING_VERSIONS}?}} &
-  \multicolumn{1}{P{6em}}{\textbf{\t{REPLACED_BY_VERSION}?}} &
-  \multicolumn{1}{P{6em}}{\textbf{\t{EBUILD_PHASE_FUNC}?}} &
+  \multicolumn{1}{P{3.25em}}{\textbf{\t{MERGE_TYPE}?}} &
+  \multicolumn{1}{P{5.25em}}{\textbf{\t{REPLACING_VERSIONS}?}} &
+  \multicolumn{1}{P{5.75em}}{\textbf{\t{REPLACED_BY_VERSION}?}} &
+  \multicolumn{1}{P{5.75em}}{\textbf{\t{EBUILD_PHASE_FUNC}?}} &
   \multicolumn{1}{c}{\textbf{\t{SYSROOT}?}} &
   \multicolumn{1}{c}{\textbf{\t{BROOT}?}} \\
   \midrule

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index b873051..5169e0a 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -110,6 +110,7 @@ Ebuilds may define any of the following variables:
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various ebuild-defined variables}
 \label{tab:optional-vars-table}
+\addtolength{\tabcolsep}{-0.1pt} % table is very slightly too wide
 \begin{tabular}{}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index bb244c8..a5597fc 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -356,8 +356,8 @@ current phase function has returned.
 \begin{tabular}{ll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{1}{c}{\textbf{-{}-disable-dependency-tracking}} &
-  \multicolumn{1}{c}{\textbf{-{}-disable-silent-rules}} &
+  \multicolumn{1}{P{9em}}{\textbf{-{}-disable-dependency-tracking}} &
+  \multicolumn{1}{P{5em}}{\textbf{-{}-disable-silent-rules}} &
   \multicolumn{1}{c}{\textbf{-{}-docdir}} &
   \multicolumn{1}{c}{\textbf{-{}-htmldir}} &
   \multicolumn{1}{c}{\textbf{-{}-with-sysroot}} \\



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

2018-02-18 Thread Ulrich Müller
commit: 7dc54ec9b8ff7588057672f5053a1885d61516be
Author: James Le Cuirot  gentoo  org>
AuthorDate: Sun Sep 17 21:23:58 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Feb 18 13:35:54 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=7dc54ec9

EAPI 7 has SYSROOT and ESYSROOT

Bug: https://bugs.gentoo.org/317337

 eapi-differences.tex |  4 
 ebuild-env-vars.tex  | 34 +-
 2 files changed, 29 insertions(+), 9 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 21411eb..9c769b5 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -155,6 +155,9 @@ Parallel tests & \compactfeatureref{parallel-tests} &
 \t{ECLASSDIR} & \compactfeatureref{eclassdir} &
 Yes & Yes & Yes & Yes & No \\
 
+\t{SYSROOT}, \t{ESYSROOT} & \compactfeatureref{sysroot} &
+No & No & No & No & Yes \\
+
 \t{DESTTREE} & \compactfeatureref{desttree} &
 Yes & Yes & Yes & Yes & No \\
 
@@ -420,6 +423,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{ECLASSDIR} is gone, \featureref{eclassdir}.
 \item \t{DESTTREE} is gone, \featureref{desttree}.
 \item \t{INSDESTTREE} is gone, \featureref{insdesttree}.
+\item \t{SYSROOT} and \t{ESYSROOT}, \featureref{sysroot}.
 \item \t{ROOT}, \t{EROOT}, \t{D}, \t{ED} no longer end with a trailing slash,
 \featureref{trailing-slash}.
 \end{compactitem}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 27417bf..1e34488 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -132,6 +132,18 @@ variable.
 for convenience. See also the \t{EPREFIX} variable. Only for EAPIs listed 
in
 table~\ref{tab:offset-env-vars-table} as supporting \t{EROOT}\@. The 
presence of a trailing
 slash is EAPI dependent as listed in table~\ref{tab:trailing-slash}. \\
+\t{SYSROOT} &
+\t{src_*} &
+No &
+\featurelabel{sysroot} The absolute path to the root directory containing 
build dependencies
+satisfied by \t{DEPEND}\@. Only for EAPIs listed in 
table~\ref{tab:added-env-vars-table}
+as supporting \t{SYSROOT}. \\
+\t{ESYSROOT} &
+\t{src_*} &
+No &
+Contains the concatenation of the paths in the \t{SYSROOT} and \t{EPREFIX} 
variables,
+for convenience. See also the \t{EPREFIX} variable. Only for EAPIs listed
+in table~\ref{tab:offset-env-vars-table} as supporting \t{ESYSROOT}. \\
 \t{T} &
 All &
 Partially\footnote{Consistent and preserved across a single connected 
sequence of install or
@@ -244,17 +256,19 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various added env variables}
 \label{tab:added-env-vars-table}
-\begin{tabular}{l}
+\begin{tabular}{ll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{c}{\textbf{\t{MERGE_TYPE}?}} &
   \multicolumn{1}{P{6em}}{\textbf{\t{REPLACING_VERSIONS}?}} &
   \multicolumn{1}{P{6em}}{\textbf{\t{REPLACED_BY_VERSION}?}} &
-  \multicolumn{1}{P{6em}}{\textbf{\t{EBUILD_PHASE_FUNC}?}} \\
+  \multicolumn{1}{P{6em}}{\textbf{\t{EBUILD_PHASE_FUNC}?}} &
+  \multicolumn{1}{c}{\textbf{\t{SYSROOT}?}} \\
   \midrule
-  0, 1, 2, 3& No  & No  & No  & No  \\
-  4 & Yes & Yes & Yes & No  \\
-  5, 6, 7   & Yes & Yes & Yes & Yes \\
+  0, 1, 2, 3& No  & No  & No  & No  & No  \\
+  4 & Yes & Yes & Yes & No  & No  \\
+  5, 6  & Yes & Yes & Yes & Yes & No  \\
+  7 & Yes & Yes & Yes & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -282,15 +296,17 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting offset-prefix env variables}
 \label{tab:offset-env-vars-table}
-\begin{tabular}{}
+\begin{tabular}{l}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{c}{\textbf{\t{EPREFIX}?}} &
   \multicolumn{1}{c}{\textbf{\t{EROOT}?}} &
-  \multicolumn{1}{c}{\textbf{\t{ED}?}} \\
+  \multicolumn{1}{c}{\textbf{\t{ED}?}} &
+  \multicolumn{1}{c}{\textbf{\t{ESYSROOT}?}} \\
   \midrule
-  0, 1, 2   & No  & No  & No  \\
-  3, 4, 5, 6, 7 & Yes & Yes & Yes \\
+  0, 1, 2   & No  & No  & No  & No  \\
+  3, 4, 5, 6& Yes & Yes & Yes & No  \\
+  7 & Yes & Yes & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2018-02-18 Thread Ulrich Müller
commit: 45ce19f6152061277ad7b91662336b4b8ae32fa5
Author: Michał Górny  gentoo  org>
AuthorDate: Thu Sep 28 14:05:38 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Feb 18 13:35:54 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=45ce19f6

EAPI 7 has eqawarn

Bug: https://bugs.gentoo.org/482884

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index d7153a8..97ca9ad 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -239,6 +239,9 @@ Query command options & 
\compactfeatureref{pm-query-options} &
 Output commands use stdout & \compactfeatureref{output-no-stdout} &
 Yes & Yes & Yes & Yes & No \\
 
+\t{eqawarn} & \compactfeatureref{eqawarn} &
+No & No & No & No & Yes \\
+
 \t{die -n} & \compactfeatureref{nonfatal-die} &
 No & No & No & Yes & Yes \\
 
@@ -465,6 +468,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{dolib} and \t{libopts} banned, \featureref{banned-commands}.
 \item Sandbox path removal commands, \featureref{sandbox-rm}.
 \item Output commands no longer use stdout, \featureref{output-no-stdout}.
+\item \t{eqawarn}, \featureref{eqawarn}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 4f74fc4..9820340 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -174,6 +174,10 @@ output, using stdout as an output facility is forbidden.
 manager may choose to log \t{elog} messages by default where \t{einfo} 
messages are not, for
 example.
 \item[ewarn] Displays a warning message. Must not go to stdout.
+\item[eqawarn] \featurelabel{eqawarn} Display a QA warning message intended 
for ebuild developers.
+The package manager may provide appropriate mechanisms to skip those 
messages for normal users.
+Must not go to stdout. Only available in EAPIs listed in 
table~\ref{tab:output-commands} as
+supporting \t{eqawarn}.
 \item[eerror] Displays an error message. Must not go to stdout.
 \item[ebegin] Displays an informational message. Should be used when beginning 
a possibly
 lengthy process, and followed by a call to \t{eend}.
@@ -186,13 +190,14 @@ output, using stdout as an output facility is forbidden.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Output commands for EAPIs}
 \label{tab:output-commands}
-\begin{tabular}{ll}
+\begin{tabular}{lll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{1}{c}{\textbf{Commands can output to stdout?}} \\
+  \multicolumn{1}{c}{\textbf{Commands can output to stdout?}} &
+  \multicolumn{1}{c}{\textbf{Supports \t{eqawarn}?}} \\
   \midrule
-  0, 1, 2, 3, 4, 5, 6 & Yes \\
-  7   & No  \\
+  0, 1, 2, 3, 4, 5, 6 & Yes & No  \\
+  7   & No  & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2018-02-18 Thread Ulrich Müller
commit: 6c4a2260413acf81287324697379dfbe335a6518
Author: Michał Górny  gentoo  org>
AuthorDate: Wed Oct  4 17:44:06 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Feb 18 13:35:54 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=6c4a2260

EAPI 7 has sandbox directory removal functions.

Bug: https://bugs.gentoo.org/630422

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 7bddf41..96e0c0c 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -230,6 +230,9 @@ Most utilities die & \compactfeatureref{die-on-failure} &
 \t{libopts} & \compactfeatureref{banned-commands} &
 Yes & Yes & Yes & Yes & Banned \\
 
+Sandbox \t{rm*} commands & \compactfeatureref{sandbox-rm} &
+No & No & No & No & Yes \\
+
 Query command options & \compactfeatureref{pm-query-options} &
 None & None & \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, 
\t{-r} \\
 
@@ -457,6 +460,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{nonfatal} is both a shell function and an external command, 
\featureref{nonfatal}.
 \item \t{dohtml} banned, \featureref{banned-commands}.
 \item \t{dolib} and \t{libopts} banned, \featureref{banned-commands}.
+\item Sandbox path removal commands, \featureref{sandbox-rm}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index ea002f2..2d23075 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -87,6 +87,35 @@ argument. Ebuilds must not run any of these commands once 
the current phase func
 \item[adddeny] Add a directory to the deny list.
 \end{description}
 
+\featurelabel{sandbox-rm} Additionally, in EAPIs listed in 
table~\ref{tab:sandbox-command-table}
+as supporting the respective commands, the following commands are available:
+\begin{description}
+\item[rmread] Remove a directory from the permitted read list.
+\item[rmwrite] Remove a directory from the permitted write list.
+\item[rmpredict] Remove a directory from the predict list.
+\item[rmdeny] Remove a directory from the deny list.
+\end{description}
+
+All of these commands match paths exactly. Removing a directory that is not 
present on the list
+is silently ignored.
+
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{Additional sandbox commands in EAPIs}
+\label{tab:sandbox-command-table}
+\begin{tabular}{l}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{\t{rmread}?}} &
+  \multicolumn{1}{c}{\textbf{\t{rmwrite}?}} &
+  \multicolumn{1}{c}{\textbf{\t{rmpredict}?}} &
+  \multicolumn{1}{c}{\textbf{\t{rmdeny}?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6 & No  & No  & No  & No  \\
+  7   & Yes & Yes & Yes & Yes \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \subsection{Package manager query commands}
 These commands are used to extract information about the system. Ebuilds must 
not run any of
 these commands in parallel with any other package manager command. Ebuilds 
must not run any of



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

2018-02-18 Thread Ulrich Müller
commit: 48a11e8f9994131eb8db42a7aa6f4c1cedd94949
Author: Michał Górny  gentoo  org>
AuthorDate: Fri Sep 29 03:13:57 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Feb 18 13:35:54 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=48a11e8f

EAPI 7 removes DESTTREE and INSDESTTREE.

Bug: https://bugs.gentoo.org/173630

 eapi-differences.tex |  8 
 ebuild-env-vars.tex  | 19 ---
 2 files changed, 20 insertions(+), 7 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index f87e448..283891b 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -155,6 +155,12 @@ Parallel tests & \compactfeatureref{parallel-tests} &
 \t{ECLASSDIR} & \compactfeatureref{eclassdir} &
 Yes & Yes & Yes & Yes & No \\
 
+\t{DESTTREE} & \compactfeatureref{desttree} &
+Yes & Yes & Yes & Yes & No \\
+
+\t{INSDESTTREE} & \compactfeatureref{insdesttree} &
+Yes & Yes & Yes & Yes & No \\
+
 \t{KV} & \compactfeatureref{kv} &
 Yes & No & No & No & No \\
 
@@ -409,6 +415,8 @@ EAPI 7 is EAPI 6 with the following changes:
 \item Automatic enforcing of \t{REQUIRED_USE}, \featureref{auto-req-use}.
 \item \t{PORTDIR} is gone, \featureref{portdir}.
 \item \t{ECLASSDIR} is gone, \featureref{eclassdir}.
+\item \t{DESTTREE} is gone, \featureref{desttree}.
+\item \t{INSDESTTREE} is gone, \featureref{insdesttree}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 0258d1a..2d79f20 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -176,11 +176,14 @@ variable.
 \t{DESTTREE} &
 \t{src_install} &
 No &
-Controls the location where \t{dobin}, \t{dolib}, \t{domo}, and \t{dosbin} 
install things. \\
+\featurelabel{desttree} Controls the location where \t{dobin}, \t{dolib}, 
\t{domo},
+and \t{dosbin} install things. Only for EAPIs listed in 
table~\ref{tab:removed-env-vars-table}
+as supporting \t{DESTTREE}. \\
 \t{INSDESTTREE} &
 \t{src_install} &
 No &
-Controls the location where \t{doins} installs things. \\
+\featurelabel{insdesttree} Controls the location where \t{doins} installs 
things. Only for EAPIs
+listed in table~\ref{tab:removed-env-vars-table} as supporting 
\t{INSDESTTREE}. \\
 \t{USE} &
 All &
 Yes &
@@ -255,17 +258,19 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various removed env variables}
 \label{tab:removed-env-vars-table}
-\begin{tabular}{l}
+\begin{tabular}{lll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{c}{\textbf{\t{AA}?}} &
   \multicolumn{1}{c}{\textbf{\t{KV}?}} &
   \multicolumn{1}{c}{\textbf{\t{PORTDIR}?}} &
-  \multicolumn{1}{c}{\textbf{\t{ECLASSDIR}?}} \\
+  \multicolumn{1}{c}{\textbf{\t{ECLASSDIR}?}} &
+  \multicolumn{1}{c}{\textbf{\t{DESTTREE}?}} &
+  \multicolumn{1}{c}{\textbf{\t{INSDESTTREE}?}} \\
   \midrule
-  0, 1, 2, 3& Yes & Yes & Yes & Yes \\
-  4, 5, 6   & No  & No  & Yes & Yes \\
-  7 & No  & No  & No  & No  \\
+  0, 1, 2, 3& Yes & Yes & Yes & Yes & Yes & Yes \\
+  4, 5, 6   & No  & No  & Yes & Yes & Yes & Yes \\
+  7 & No  & No  & No  & No  & No  & No  \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2018-02-18 Thread Ulrich Müller
commit: a4b50120a051eb5e948f1a1ff60af53f91967e0b
Author: Michał Górny  gentoo  org>
AuthorDate: Fri Sep 29 13:48:46 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Feb 18 13:35:54 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=a4b50120

pkg-mgr-commands: Redefine dolib* in terms of libdir.a

Since EAPI 7 removes dolib, it would be a bad fit to describe the two
other commands on top of one that is removed. Instead, start by defining
libdir.a and then define the two other commands on top of it.

This also clarifies that dolib.a & dolib.so do not respect libopts,
while the old wording was not clear on that. However, this is at least
how it was implemented in Portage (with dolib.a and dolib.so overriding
libopts completely).

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

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index ac3d460..3ce2611 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -477,15 +477,15 @@ can be extended or reduced (see below). The options that 
can be passed to \t{doh
 symlink is encountered. Failure behaviour is EAPI dependent as per
 section~\ref{sec:failure-behaviour}.
 
-\item[dolib] For each argument, installs it into the appropriate library 
subdirectory under
-\t{DESTTREE}, as determined by Algorithm~\ref{alg:ebuild-libdir}. Files 
are installed by default
-with file mode \t{0644}, or with the \t{install} options set by the most 
recent \t{libopts}
-call. Any symlinks are installed into the same directory as relative links 
to their original
-target. Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
+\item[dolib.a] For each argument, installs it into the appropriate library 
subdirectory under
+\t{DESTTREE}, as determined by algorithm~\ref{alg:ebuild-libdir}. Files 
are installed with file
+mode \t{0644}. Any symlinks are installed into the same directory as 
relative links to their
+original target. Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
 
-\item[dolib.a] As for \t{dolib} except each file is installed with mode 
\t{0644}.
+\item[dolib.so] As for \t{dolib.a} except each file is installed with mode 
\t{0755}.
 
-\item[dolib.so] As for \t{dolib} except each file is installed with mode 
\t{0755}.
+\item[dolib] As for \t{dolib.a} except that the default install mode can be 
overriden with
+the \t{install} options set by the most recent \t{libopts} call.
 
 \begin{algorithm}
 \caption{Determining the library directory} \label{alg:ebuild-libdir}



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

2018-02-18 Thread Ulrich Müller
commit: 2ee8c377bc18dc5a31020ab7f0f26e4258ecd581
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun Nov 15 17:20:13 2015 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Feb 18 13:35:54 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=2ee8c377

EAPI 7: dohtml banned.

Bug: https://bugs.gentoo.org/520546

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index f47a8c6..12ece88 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -221,6 +221,9 @@ Most utilities die & \compactfeatureref{die-on-failure} &
 \t{einstall} & \compactfeatureref{banned-commands} &
 Yes & Yes & Yes & Banned & Banned \\
 
+\t{dohtml} & \compactfeatureref{banned-commands} &
+Yes & Yes & Yes & Yes & Banned \\
+
 Query command options & \compactfeatureref{pm-query-options} &
 None & None & \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, 
\t{-r} \\
 
@@ -446,6 +449,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{ENV_UNSET}, \featureref{env-unset}.
 \item \t{patch} is compatible with GNU patch 2.7, \featureref{gnu-patch}.
 \item \t{nonfatal} is both a shell function and an external command, 
\featureref{nonfatal}.
+\item \t{dohtml} banned, \featureref{banned-commands}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 2312f81..ac3d460 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -56,18 +56,20 @@ called, the package manager must abort the build process 
indicating an error.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Banned commands}
 \label{tab:banned-commands-table}
-\begin{tabular}{}
+\begin{tabular}{l}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{3}{c}{\textbf{Command banned?}} \\
+  \multicolumn{4}{c}{\textbf{Command banned?}} \\
   \multicolumn{1}{c}{} &
   \multicolumn{1}{c}{\textbf{\t{dohard}}} &
   \multicolumn{1}{c}{\textbf{\t{dosed}}} &
-  \multicolumn{1}{c}{\textbf{\t{einstall}}} \\
+  \multicolumn{1}{c}{\textbf{\t{einstall}}} &
+  \multicolumn{1}{c}{\textbf{\t{dohtml}}} \\
   \midrule
-  0, 1, 2, 3& No  & No  & No  \\
-  4, 5  & Yes & Yes & No  \\
-  6, 7  & Yes & Yes & Yes \\
+  0, 1, 2, 3& No  & No  & No  & No  \\
+  4, 5  & Yes & Yes & No  & No  \\
+  6 & Yes & Yes & Yes & No  \\
+  7 & Yes & Yes & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -453,6 +455,8 @@ can be extended or reduced (see below). The options that 
can be passed to \t{doh
 offset-prefix.
 \end{description}
 
+In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as per
+section~\ref{sec:banned-commands}.
 Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
 
 It is undefined whether a failure shall occur if \t{-r} is not specified 
and a directory is



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

2018-02-18 Thread Ulrich Müller
commit: 85043ede127fd161eefeaf4ecc0ca995e3bb1735
Author: James Le Cuirot  gentoo  org>
AuthorDate: Tue Sep 19 21:36:40 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Feb 18 13:35:54 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=85043ede

EAPI 7: econf adds --with-sysroot

Bug: https://bugs.gentoo.org/317337

 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 9c769b5..0f6371b 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -225,7 +225,7 @@ Option \t{-{}-host-root} & 
\compactfeatureref{host-root-option} &
 None & disable dependency tracking &
 disable dependency tracking, disable silent rules &
 disable dependency tracking, disable silent rules, docdir, htmldir &
-disable dependency tracking, disable silent rules, docdir, htmldir \\
+disable dependency tracking, disable silent rules, docdir, htmldir, with 
sysroot \\
 
 \t{dodoc -r} & \compactfeatureref{dodoc} &
 No & Yes & Yes & Yes & Yes \\
@@ -426,6 +426,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{SYSROOT} and \t{ESYSROOT}, \featureref{sysroot}.
 \item \t{ROOT}, \t{EROOT}, \t{D}, \t{ED} no longer end with a trailing slash,
 \featureref{trailing-slash}.
+\item \t{econf} adds \t{-{}-with-sysroot}, \featureref{econf-options}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index ad5000c..56df22d 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -258,6 +258,9 @@ current phase function has returned.
 \item -{}-htmldir must be \t{\$\{EPREFIX\}/usr/share/doc/\$\{PF\}/html}, 
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{-{}-htmldir} occurs in the output of \t{configure -{}-help}.
+\item -{}-with-sysroot must be \t{\$\{ESYSROOT\}}, 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{-{}-with-sysroot} occurs in the output of \t{configure 
-{}-help}.
 \item -{}-host must be the value of the \t{CHOST} environment variable.
 \item -{}-libdir must be set according to Algorithm~\ref{alg:econf-libdir}.
 \item -{}-disable-dependency-tracking, if the EAPI is listed in
@@ -271,18 +274,20 @@ current phase function has returned.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Extra \t{econf} arguments for EAPIs}
 \label{tab:econf-options-table}
-\begin{tabular}{l}
+\begin{tabular}{ll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{c}{\textbf{-{}-disable-dependency-tracking}} &
   \multicolumn{1}{c}{\textbf{-{}-disable-silent-rules}} &
   \multicolumn{1}{c}{\textbf{-{}-docdir}} &
-  \multicolumn{1}{c}{\textbf{-{}-htmldir}} \\
+  \multicolumn{1}{c}{\textbf{-{}-htmldir}} &
+  \multicolumn{1}{c}{\textbf{-{}-with-sysroot}} \\
   \midrule
-  0, 1, 2, 3& No  & No  & No  & No  \\
-  4 & Yes & No  & No  & No  \\
-  5 & Yes & Yes & No  & No  \\
-  6, 7  & Yes & Yes & Yes & Yes \\
+  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 & Yes & Yes & Yes & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2018-02-18 Thread Ulrich Müller
commit: 8b3ea676afd53d610dac29478600d1e5be2fd58f
Author: James Le Cuirot  gentoo  org>
AuthorDate: Sun Sep 17 21:39:27 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Feb 18 13:35:54 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=8b3ea676

EAPI 7 has BROOT

Bug: https://bugs.gentoo.org/317337

 eapi-differences.tex |  4 
 ebuild-env-vars.tex  | 20 ++--
 2 files changed, 18 insertions(+), 6 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 8f7db7e..989784c 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -161,6 +161,9 @@ Parallel tests & \compactfeatureref{parallel-tests} &
 \t{SYSROOT}, \t{ESYSROOT} & \compactfeatureref{sysroot} &
 No & No & No & No & Yes \\
 
+\t{BROOT} & \compactfeatureref{broot} &
+No & No & No & No & Yes \\
+
 \t{DESTTREE} & \compactfeatureref{desttree} &
 Yes & Yes & Yes & Yes & No \\
 
@@ -431,6 +434,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \featureref{trailing-slash}.
 \item \t{econf} adds \t{-{}-with-sysroot}, \featureref{econf-options}.
 \item \t{BDEPEND}, \featureref{bdepend}.
+\item \t{BROOT}, \featureref{broot}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 1e34488..e121987 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -144,6 +144,13 @@ variable.
 Contains the concatenation of the paths in the \t{SYSROOT} and \t{EPREFIX} 
variables,
 for convenience. See also the \t{EPREFIX} variable. Only for EAPIs listed
 in table~\ref{tab:offset-env-vars-table} as supporting \t{ESYSROOT}. \\
+\t{BROOT} &
+\t{src_*} &
+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}.
+\\
 \t{T} &
 All &
 Partially\footnote{Consistent and preserved across a single connected 
sequence of install or
@@ -256,19 +263,20 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various added env variables}
 \label{tab:added-env-vars-table}
-\begin{tabular}{ll}
+\begin{tabular}{lll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{c}{\textbf{\t{MERGE_TYPE}?}} &
   \multicolumn{1}{P{6em}}{\textbf{\t{REPLACING_VERSIONS}?}} &
   \multicolumn{1}{P{6em}}{\textbf{\t{REPLACED_BY_VERSION}?}} &
   \multicolumn{1}{P{6em}}{\textbf{\t{EBUILD_PHASE_FUNC}?}} &
-  \multicolumn{1}{c}{\textbf{\t{SYSROOT}?}} \\
+  \multicolumn{1}{c}{\textbf{\t{SYSROOT}?}} &
+  \multicolumn{1}{c}{\textbf{\t{BROOT}?}} \\
   \midrule
-  0, 1, 2, 3& No  & No  & No  & No  & No  \\
-  4 & Yes & Yes & Yes & No  & No  \\
-  5, 6  & Yes & Yes & Yes & Yes & No  \\
-  7 & Yes & Yes & Yes & Yes & Yes \\
+  0, 1, 2, 3& No  & No  & No  & No  & No  & No  \\
+  4 & Yes & Yes & Yes & No  & No  & No  \\
+  5, 6  & Yes & Yes & Yes & Yes & No  & No  \\
+  7 & Yes & Yes & Yes & Yes & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2018-02-18 Thread Ulrich Müller
commit: bc3575df2a027e714b2a11365a5f5dcedd7eb7b7
Author: Michał Górny  gentoo  org>
AuthorDate: Thu Sep 28 14:10:20 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Feb 18 13:35:54 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=bc3575df

EAPI 7 disallows stdout output of output functions

Bug: https://bugs.gentoo.org/483240

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 96e0c0c..d7153a8 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -236,6 +236,9 @@ Sandbox \t{rm*} commands & \compactfeatureref{sandbox-rm} &
 Query command options & \compactfeatureref{pm-query-options} &
 None & None & \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, 
\t{-r} \\
 
+Output commands use stdout & \compactfeatureref{output-no-stdout} &
+Yes & Yes & Yes & Yes & No \\
+
 \t{die -n} & \compactfeatureref{nonfatal-die} &
 No & No & No & Yes & Yes \\
 
@@ -461,6 +464,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{dohtml} banned, \featureref{banned-commands}.
 \item \t{dolib} and \t{libopts} banned, \featureref{banned-commands}.
 \item Sandbox path removal commands, \featureref{sandbox-rm}.
+\item Output commands no longer use stdout, \featureref{output-no-stdout}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 2d23075..4f74fc4 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -161,8 +161,12 @@ These commands display messages to the user. Unless 
otherwise stated, the entire
 used as a message, with backslash-escaped characters interpreted as for the 
\t{echo -e} command of
 bash, notably \t{\textbackslash t} for a horizontal tab, \t{\textbackslash n} 
for a new line, and
 \t{\textbackslash\textbackslash} for a literal backslash. Ebuilds must not run 
any of these commands
-once the current phase function has returned. Unless otherwise noted, output 
may be sent to stdout,
-stderr or some other appropriate facility.
+once the current phase function has returned.
+
+\featurelabel{output-no-stdout} Unless otherwise noted, output may be sent to 
stderr or some other
+appropriate facility. In EAPIs listed in table~\ref{tab:output-commands} as 
not allowing stdout
+output, using stdout as an output facility is forbidden.
+
 \begin{description}
 \item[einfo] Displays an informational message.
 \item[einfon] Displays an informational message without a trailing newline.
@@ -179,6 +183,20 @@ stderr or some other appropriate facility.
 message followed by a failure indicator. Returns its first argument as 
exit status.
 \end{description}
 
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{Output commands for EAPIs}
+\label{tab:output-commands}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Commands can output to stdout?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6 & Yes \\
+  7   & No  \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \subsection{Error commands}
 These commands are used when an error is detected that will prevent the build 
process from
 completing. Ebuilds must not run any of these commands once the current phase 
function has returned.



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

2018-02-18 Thread Ulrich Müller
commit: 126916b74c85e600749fa8342afbf38f5ade0611
Author: Ulrich Müller  gentoo  org>
AuthorDate: Tue Nov  7 17:21:09 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Feb 18 13:35:54 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=126916b7

Add chewi to acknowledgements.

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

diff --git a/introduction.tex b/introduction.tex
index 5990f86..afbe708 100644
--- a/introduction.tex
+++ b/introduction.tex
@@ -62,9 +62,10 @@ applicable to tools or other applications that interact with 
ebuilds or ebuild r
 Thanks to Mike Kelly (package manager provided utilities, 
section~\ref{sec:pkg-mgr-commands}),
 Danny van Dyk (ebuild functions, section~\ref{sec:ebuild-functions}), David 
Leverton (various
 sections), Petteri Räty (environment state, 
section~\ref{sec:ebuild-env-state}), Michał Górny
-(various sections), Andreas K. Hüttel (stable use masking, 
section~\ref{sec:use-masking}) and
-Zac Medico (sub-slots, section~\ref{sec:mandatory-vars}) for contributions. 
Thanks also to
-Mike Frysinger and Brian Harring for proof-reading and suggestions for fixes 
and/or clarification.
+(various sections), Andreas K. Hüttel (stable use masking, 
section~\ref{sec:use-masking}),
+Zac Medico (sub-slots, section~\ref{sec:mandatory-vars}) and James Le Cuirot 
(build dependencies,
+section~\ref{sec:ebuild-env-vars}) for contributions. Thanks also to Mike 
Frysinger and
+Brian Harring for proof-reading and suggestions for fixes and/or clarification.
 
 % vim: set filetype=tex fileencoding=utf8 et tw=100 spell spelllang=en :
 



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

2018-02-18 Thread Ulrich Müller
commit: 18b9065706905032ad2cf73c008c5b1fb6ca3a00
Author: Michał Górny  gentoo  org>
AuthorDate: Sat Sep 23 23:46:32 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Feb 18 13:35:54 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=18b90657

dependencies: Provide a nice summary table for dep APIs

 dependencies.tex | 18 +-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/dependencies.tex b/dependencies.tex
index e53cff6..696f478 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -26,6 +26,21 @@
 \end{tabular}
 \end{centertable}
 
+\begin{centertable}{Summary of other interfaces related to dependency classes}
+\label{tab:dep-class-api}
+\begin{tabular}{}
+  \toprule
+& \t{BDEPEND} & \t{DEPEND} & 
\t{RDEPEND}, \t{PDEPEND} \\
+  \midrule
+  Binary compatible with& \t{CBUILD}  & \t{CHOST}  & 
\t{CHOST} \\
+  Base unprefixed path  & \t{/}   & \t{\$\{SYSROOT\}}  & 
\t{\$\{ROOT\}}\\
+  Relevant offset-prefix& \t{\$\{BROOT\}} & \t{\$\{EPREFIX\}}  & 
\t{\$\{EPREFIX\}} \\
+  Path combined with prefix & \t{\$\{BROOT\}} & \t{\$\{ESYSROOT\}} & 
\t{\$\{EROOT\}}   \\
+  PM query command option   & \t{-b}  & \t{-d} & 
\t{-r}\\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 There are three classes of dependencies supported by ebuilds:
 
 \begin{compactitem}
@@ -65,7 +80,8 @@ as supporting \t{BDEPEND}, the build dependencies are split 
into two subclasses:
 \end{centertable}
 
 Table~\ref{tab:phase-function-dependency-classes} lists dependencies which 
must be satisfied before
-a particular phase function is executed.
+a particular phase function is executed. Table~\ref{tab:dep-class-api} 
summarises additional
+interfaces related to the dependency classes.
 
 In addition, \t{SRC_URI}, \t{HOMEPAGE}, \t{RESTRICT}, \t{PROPERTIES}, 
\t{LICENSE} and
 \t{REQUIRED_USE} use dependency-style specifications to specify their values.



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

2018-02-18 Thread Ulrich Müller
commit: df314a938acafe945989d8b98e608469448339a7
Author: Michał Górny  gentoo  org>
AuthorDate: Fri Sep 29 03:17:43 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Feb 18 13:35:54 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=df314a93

EAPI 7 removes PORTDIR and ECLASSDIR.

Bug: https://bugs.gentoo.org/373349
Bug: https://bugs.gentoo.org/373351

 eapi-differences.tex |  8 
 ebuild-env-vars.tex  | 17 +++--
 2 files changed, 19 insertions(+), 6 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 326774d..f87e448 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -149,6 +149,12 @@ Parallel tests & \compactfeatureref{parallel-tests} &
 \t{AA} & \compactfeatureref{aa} &
 Yes & No & No & No & No \\
 
+\t{PORTDIR} & \compactfeatureref{portdir} &
+Yes & Yes & Yes & Yes & No \\
+
+\t{ECLASSDIR} & \compactfeatureref{eclassdir} &
+Yes & Yes & Yes & Yes & No \\
+
 \t{KV} & \compactfeatureref{kv} &
 Yes & No & No & No & No \\
 
@@ -401,6 +407,8 @@ EAPI 7 is EAPI 6 with the following changes:
 being matched, \featureref{empty-dep-groups}.
 \item \t{||=} dependency groups, \featureref{binding-any-of}.
 \item Automatic enforcing of \t{REQUIRED_USE}, \featureref{auto-req-use}.
+\item \t{PORTDIR} is gone, \featureref{portdir}.
+\item \t{ECLASSDIR} is gone, \featureref{eclassdir}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 4545272..0258d1a 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -110,11 +110,13 @@ variable.
 \t{PORTDIR} &
 \t{src_*} &
 No &
-The full path to the master repository's base directory. \\
+\featurelabel{portdir} The full path to the master repository's base 
directory. Only for EAPIs
+listed in table~\ref{tab:removed-env-vars-table} as supporting 
\t{PORTDIR}. \\
 \t{ECLASSDIR} &
 \t{src_*} &
 No &
-The full path to the master repository's eclass directory. \\
+\featurelabel{eclassdir} The full path to the master repository's eclass 
directory. Only for
+EAPIs listed in table~\ref{tab:removed-env-vars-table} as supporting 
\t{ECLASSDIR}. \\
 \t{ROOT} &
\t{pkg_*} &
No &
@@ -253,14 +255,17 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various removed env variables}
 \label{tab:removed-env-vars-table}
-\begin{tabular}{lll}
+\begin{tabular}{l}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{c}{\textbf{\t{AA}?}} &
-  \multicolumn{1}{c}{\textbf{\t{KV}?}} \\
+  \multicolumn{1}{c}{\textbf{\t{KV}?}} &
+  \multicolumn{1}{c}{\textbf{\t{PORTDIR}?}} &
+  \multicolumn{1}{c}{\textbf{\t{ECLASSDIR}?}} \\
   \midrule
-  0, 1, 2, 3& Yes & Yes \\
-  4, 5, 6, 7& No  & No  \\
+  0, 1, 2, 3& Yes & Yes & Yes & Yes \\
+  4, 5, 6   & No  & No  & Yes & Yes \\
+  7 & No  & No  & No  & No  \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2018-02-18 Thread Ulrich Müller
commit: f162015a61954fc60e07453912b7a5136eb1ceac
Author: Michał Górny  gentoo  org>
AuthorDate: Fri Sep 29 14:33:22 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Feb 18 13:35:54 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=f162015a

EAPI 7 allows die in subshell.

Bug: https://bugs.gentoo.org/465008

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 97ca9ad..ddf480e 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -245,6 +245,9 @@ Output commands use stdout & 
\compactfeatureref{output-no-stdout} &
 \t{die -n} & \compactfeatureref{nonfatal-die} &
 No & No & No & Yes & Yes \\
 
+\t{die} in subshell & \compactfeatureref{subshell-die} &
+No & No & No & No & Yes \\
+
 \t{eapply} & \compactfeatureref{eapply} &
 No & No & No & Yes & Yes \\
 
@@ -469,6 +472,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item Sandbox path removal commands, \featureref{sandbox-rm}.
 \item Output commands no longer use stdout, \featureref{output-no-stdout}.
 \item \t{eqawarn}, \featureref{eqawarn}.
+\item \t{die} is guaranteed to work in a subshell, \featureref{subshell-die}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 9820340..91c19b6 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -27,7 +27,7 @@ The following commands affect this behaviour:
 implementations to account for calling directly in ebuild scope or through 
\t{xargs}.
 
 Explicit \t{die} or \t{assert} commands only respect \t{nonfatal} when 
called with the \t{-n}
-option and in EAPIs supporting this option, see 
table~\ref{tab:nonfatal-die}.
+option and in EAPIs supporting this option, see 
table~\ref{tab:die-properties}.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{7}
@@ -209,23 +209,30 @@ completing. Ebuilds must not run any of these commands 
once the current phase fu
 \item[die] \featurelabel{nonfatal-die} If called under the \t{nonfatal} 
command (as per
 section~\ref{sec:failure-behaviour}) and with \t{-n} as its first 
parameter, displays a failure
 message provided in its following argument and then returns a non-zero 
exit status. Only in
-EAPIs listed in table~\ref{tab:nonfatal-die} as supporting option~\t{-n}. 
Otherwise, displays
+EAPIs listed in table~\ref{tab:die-properties} as supporting 
option~\t{-n}. Otherwise, displays
 a failure message provided in its first and only argument, and then aborts 
the build process.
-\t{die} is \e{not} guaranteed to work correctly if called from a subshell 
environment.
+
+\featurelabel{subshell-die} In EAPIs listed in 
table~\ref{tab:die-properties} as not providing
+subshell support, \t{die} is \e{not} guaranteed to work correctly if 
called from a subshell
+environment.
 \item[assert] Checks the value of the shell's pipe status variable, and if any 
component is non-zero
 (indicating failure), calls \t{die}, passing any parameters to it.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{7}
-\begin{centertable}{EAPIs supporting \t{-n} for \t{die} and \t{assert} 
commands}
-\label{tab:nonfatal-die}
-\begin{tabular}{ll}
+\begin{centertable}{Properties of \t{die} and \t{assert} commands in EAPIs}
+\label{tab:die-properties}
+\begin{tabular}{lll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{1}{c}{\textbf{\t{die} and \t{assert} support \t{-n}?}} \\
+  \multicolumn{2}{c}{\textbf{\t{die} and \t{assert}}} \\
+  &
+  \multicolumn{1}{c}{\textbf{support \t{-n}?}} &
+  \multicolumn{1}{c}{\textbf{work in subshell?}} \\
   \midrule
-  0, 1, 2, 3, 4, 5  & No  \\
-  6, 7  & Yes \\
+  0, 1, 2, 3, 4, 5  & No  & No  \\
+  6 & Yes & No  \\
+  7 & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2018-02-18 Thread Ulrich Müller
commit: 0ce5b9ac6aea99547c18bb914a92381c4f093d31
Author: James Le Cuirot  gentoo  org>
AuthorDate: Sat Sep 23 20:53:59 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Feb 18 13:35:54 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=0ce5b9ac

EAPI 7 drops --host-root in favor of -b, -d, and -r

Bug: https://bugs.gentoo.org/317337

 eapi-differences.tex |  8 +---
 pkg-mgr-commands.tex | 30 --
 2 files changed, 25 insertions(+), 13 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 989784c..df8ef98 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -215,8 +215,8 @@ Most utilities die & \compactfeatureref{die-on-failure} &
 \t{einstall} & \compactfeatureref{banned-commands} &
 Yes & Yes & Yes & Banned & Banned \\
 
-Option \t{-{}-host-root} & \compactfeatureref{host-root-option} &
-No & No & Yes & Yes & Yes \\
+Query command options & \compactfeatureref{pm-query-options} &
+None & None & \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, 
\t{-r} \\
 
 \t{die -n} & \compactfeatureref{nonfatal-die} &
 No & No & No & Yes & Yes \\
@@ -381,7 +381,7 @@ EAPI 5 is EAPI 4 with the following changes:
 \item \t{USE} is calculated differently, \featureref{profile-iuse-inject}.
 \item \t{find} is guaranteed to be GNU, \featureref{gnu-find}.
 \item \t{best_version} and \t{has_version} support the \t{-{}-host-root} 
option,
-\featureref{host-root-option}.
+\featureref{pm-query-options}.
 \item \t{econf} adds \t{-{}-disable-silent-rules}, \featureref{econf-options}.
 \item \t{doheader} and \t{newheader} support, \featureref{doheader}.
 \item \t{new*} can read from standard input, \featureref{newfoo-stdin}.
@@ -435,6 +435,8 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{econf} adds \t{-{}-with-sysroot}, \featureref{econf-options}.
 \item \t{BDEPEND}, \featureref{bdepend}.
 \item \t{BROOT}, \featureref{broot}.
+\item \t{best_version} and \t{has_version} support \t{-b}, \t{-d} and \t{-r} 
options instead of
+\t{-{}-host-root}, \featureref{pm-query-options}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 56df22d..16b3aa4 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -82,27 +82,37 @@ These commands are used to extract information about the 
system. Ebuilds must no
 these commands in parallel with any other package manager command. Ebuilds 
must not run any of
 these commands once the current phase function has returned.
 
-\featurelabel{host-root-option} In EAPIs listed in 
table~\ref{tab:foo-version-host-root-table} as
-supporting option \t{-{}-host-root}, this flag as the first argument will 
cause the query to apply
-to the host root instead of \t{ROOT}.
+\featurelabel{pm-query-options} In EAPIs listed in 
table~\ref{tab:pm-query-options} as supporting
+option \t{-{}-host-root}, this flag as the first argument will cause the query 
to apply to the
+host root. Otherwise, it applies to \t{ROOT}.
+
+In EAPIs listed in table~\ref{tab:pm-query-options} as supporting options 
\t{-b}, \t{-d} and \t{-r},
+these mutually exclusive flags as the first argument will cause the query to 
apply to locations
+targetted by \t{BDEPEND}, \t{DEPEND} and \t{RDEPEND}, respectively. When none 
of these options
+are given, \t{-r} is assumed.
+
 \begin{description}
 \item[has_version] Takes exactly one package dependency specification as an 
argument. Returns
-true if a package matching the specification is installed in \t{ROOT}, and 
false otherwise.
+true if a package matching the specification is installed, and false 
otherwise.
 \item[best_version] Takes exactly one package dependency specification as an 
argument. If a
 matching package is installed, prints the category, package name and 
version of the highest
 matching version; otherwise, prints an empty string. The exit code is 
unspecified.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{7}
-\begin{centertable}{EAPIs supporting \t{-{}-host-root} for \t{*_version} 
commands}
-\label{tab:foo-version-host-root-table}
-\begin{tabular}{ll}
+\begin{centertable}{Package manager query command options supported by EAPIs}
+\label{tab:pm-query-options}
+\begin{tabular}{l}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{1}{c}{\textbf{\t{*_version} supports \t{-{}-host-root}?}} \\
+  \multicolumn{1}{c}{\textbf{\t{-{}-host-root}?}} &
+  \multicolumn{1}{c}{\textbf{\t{-b}?}} &
+  \multicolumn{1}{c}{\textbf{\t{-d}?}} &
+  \multicolumn{1}{c}{\textbf{\t{-r}?}} \\
   \midrule
-  0, 1, 2, 3, 4 & No  \\
-  5, 6  & Yes \\
+  0, 1, 2, 3, 4 & No  & No  & No  & No  \\
+  5, 6  & Yes & No  & No  & No  \\
+  7 & No  & Yes & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2018-02-18 Thread Ulrich Müller
commit: a7baf55ca138f5f3fae7239d03c90ab88151bc41
Author: Michał Górny  gentoo  org>
AuthorDate: Thu Sep 28 17:50:56 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Feb 18 13:35:54 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=a7baf55c

EAPI 7 requires GNU patch 2.7.

Bug: https://bugs.gentoo.org/593786

 commands.tex | 13 -
 eapi-differences.tex |  4 
 2 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/commands.tex b/commands.tex
index 86b4232..5ba9626 100644
--- a/commands.tex
+++ b/commands.tex
@@ -26,7 +26,8 @@ The following commands must always be available in the ebuild 
environment:
 page~\pageref{tab:bash-version}.
 \item \t{sed} must be available, and must support all forms of invocations 
valid for GNU sed
 version 4 or later.
-\item \t{patch} must be available, and must support all inputs valid for GNU 
patch.
+\item \featurelabel{gnu-patch} \t{patch} must be available, and must support 
all inputs valid
+for GNU patch, version as listed in table~\ref{tab:system-commands-table}.
 \item \featurelabel{gnu-find} \t{find} and \t{xargs} must be available, and 
must support all forms
 of invocations valid for GNU findutils version 4.4 or later. Only for 
EAPIs listed in
 table~\ref{tab:system-commands-table} as requiring GNU find.
@@ -35,13 +36,15 @@ The following commands must always be available in the 
ebuild environment:
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{System commands for EAPIs}
 \label{tab:system-commands-table}
-\begin{tabular}{ll}
+\begin{tabular}{lll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{1}{c}{\textbf{GNU \t{find}?}} \\
+  \multicolumn{1}{c}{\textbf{GNU \t{find}?}} &
+  \multicolumn{1}{c}{\textbf{GNU \t{patch} version}} \\
   \midrule
-  0, 1, 2, 3, 4 & Undefined \\
-  5, 6, 7   & Yes   \\
+  0, 1, 2, 3, 4 & Undefined & Any \\
+  5, 6  & Yes   & Any \\
+  7 & Yes   & 2.7 \\
   \bottomrule
 \end{tabular}
 \end{centertable}

diff --git a/eapi-differences.tex b/eapi-differences.tex
index d738efe..47c6950 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -200,6 +200,9 @@ Profile \t{IUSE} injection & 
\compactfeatureref{profile-iuse-inject} &
 Trailing slash in \t{D} etc. & \compactfeatureref{trailing-slash} &
 Yes & Yes & Yes & Yes & No \\
 
+GNU \t{patch} version & \compactfeatureref{gnu-patch} &
+Any & Any & Any & Any & 2.7 \\
+
 \t{find} is GNU? & \compactfeatureref{gnu-find} &
 Undefined & Undefined & Yes & Yes & Yes \\
 
@@ -441,6 +444,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{best_version} and \t{has_version} support \t{-b}, \t{-d} and \t{-r} 
options instead of
 \t{-{}-host-root}, \featureref{pm-query-options}.
 \item \t{ENV_UNSET}, \featureref{env-unset}.
+\item \t{patch} is compatible with GNU patch 2.7, \featureref{gnu-patch}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}



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

2018-02-18 Thread Ulrich Müller
commit: 872cc8e4bdf7a2eb937c8969e875b03b14e5a313
Author: Ulrich Müller  gentoo  org>
AuthorDate: Fri Nov 10 13:51:41 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Feb 18 13:35:54 2018 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=872cc8e4

EAPI 7 has ENV_UNSET.

Thanks to mgorny for providing the initial wording.

Bug: https://bugs.gentoo.org/499288

 eapi-differences.tex  |  4 
 ebuild-env-vars.tex   |  2 ++
 profile-variables.tex | 23 +++
 3 files changed, 29 insertions(+)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index df8ef98..d738efe 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -179,6 +179,9 @@ Parallel tests & \compactfeatureref{parallel-tests} &
 \t{MERGE_TYPE} & \compactfeatureref{merge-type} &
 No & Yes & Yes & Yes & Yes \\
 
+\t{ENV_UNSET} & \compactfeatureref{env-unset} &
+No & No & No & No & Yes \\
+
 Sane locale settings & \compactfeatureref{locale-settings} &
 Undefined & Undefined & Undefined & Yes & Yes \\
 
@@ -437,6 +440,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{BROOT}, \featureref{broot}.
 \item \t{best_version} and \t{has_version} support \t{-b}, \t{-d} and \t{-r} 
options instead of
 \t{-{}-host-root}, \featureref{pm-query-options}.
+\item \t{ENV_UNSET}, \featureref{env-unset}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index e121987..c9ebf9b 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -330,6 +330,8 @@ package manager specific directories.
 
 \t{GZIP}, \t{BZIP}, \t{BZIP2}, \t{CDPATH}, \t{GREP_OPTIONS}, \t{GREP_COLOR} 
and \t{GLOBIGNORE}
 must not be set.
+\featurelabel{env-unset} In addition, any variable whose name appears in the 
\t{ENV_UNSET} variable
+must be unset, for EAPIs listed in table~\ref{tab:profile-env-unset} as 
supporting \t{ENV_UNSET}.
 
 \featurelabel{locale-settings} The package manager must ensure that the 
\t{LC_CTYPE} and
 \t{LC_COLLATE} locale categories are equivalent to the POSIX locale, as far as 
characters in the

diff --git a/profile-variables.tex b/profile-variables.tex
index 309f9e9..6cd770c 100644
--- a/profile-variables.tex
+++ b/profile-variables.tex
@@ -29,6 +29,13 @@ incrementally; otherwise, the following variables may or may 
not be treated incr
 \item \t{USE_EXPAND_UNPREFIXED}
 \end{compactitem}
 
+If the package manager supports any EAPI listed in 
table~\ref{tab:profile-env-unset} as using
+\t{ENV_UNSET}, the following variable must also be treated incrementally; 
otherwise, it may or
+may not be treated incrementally:
+\begin{compactitem}
+\item \t{ENV_UNSET}
+\end{compactitem}
+
 Other variables, except where they affect only package-manager-specific 
functionality (such as
 Portage's \t{FEATURES} variable), must not be treated incrementally---later 
definitions shall
 completely override those in parent profiles.
@@ -47,6 +54,20 @@ completely override those in parent profiles.
 \end{tabular}
 \end{centertable}
 
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{Profile-defined unsetting of variables in EAPIs}
+\label{tab:profile-env-unset}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Supports \t{ENV_UNSET}?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6 & No  \\
+  7   & Yes \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \subsection{Specific variables and their meanings}
 The following variables have specific meanings when set in profiles.
 \begin{description}
@@ -69,6 +90,8 @@ The following variables have specific meanings when set in 
profiles.
 displaying uninteresting or unhelpful information to an end user.
 \item[USE_EXPAND_IMPLICIT, IUSE_IMPLICIT] Used to inject implicit values into 
\t{IUSE}\@. See
 section~\ref{sec:use-iuse-handling} for details.
+\item[ENV_UNSET] Contains a whitespace-delimited list of variables that the 
package manager shall
+unset. See section~\ref{sec:ebuild-env-vars} for details.
 \end{description}
 
 In addition, for EAPIs listed in table~\ref{tab:profile-iuse-injection-table} 
as supporting profile



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

2017-11-12 Thread Ulrich Müller
commit: fd86d4c8dd87a64980db9f492fc6f4e4dcc4bdb4
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun Nov 12 19:14:16 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Sun Nov 12 19:14:16 2017 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=fd86d4c8

fixup dd298e8 "EAPI 7 has automatic USE enforcing."

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

diff --git a/dependencies.tex b/dependencies.tex
index 3f3ef79..3879dd3 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -456,7 +456,7 @@ in order of listing, according to the following rules:
 in order to make the constraint match.
 \item For an unmatched all-of group, the package manager should recursively 
enforce all constraints
 inside the group, in order of listing.
-\item For an unmatched use-conditonal group, the package manager should 
recursively enforce all
+\item For an unmatched use-conditional group, the package manager should 
recursively enforce all
 constraints inside the group, in order of listing. The associated 
condition flag is not altered.
 \item For an unmatched any-of group, the package manager should recursively 
enforce the first item
 inside the group that can be enforced without altering immutable flags, in 
order of listing.



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

2017-11-09 Thread Michał Górny
commit: 49219c2e4cafe73711c48504fec45cf3a2db7bd0
Author: Michał Górny  gentoo  org>
AuthorDate: Thu Nov  9 16:33:34 2017 +
Commit: Michał Górny  gentoo  org>
CommitDate: Thu Nov  9 20:28:02 2017 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=49219c2e

EAPI 7 has ENV_BLACKLIST

 eapi-differences.tex  |  4 
 ebuild-env-vars.tex   | 20 +---
 profile-variables.tex |  4 
 3 files changed, 21 insertions(+), 7 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index b666500..3f2 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -181,6 +181,9 @@ Parallel tests & \compactfeatureref{parallel-tests} &
 Sane locale settings & \compactfeatureref{locale-settings} &
 Undefined & Undefined & Undefined & Yes & Yes \\
 
+\t{ENV_BLACKLIST} & \compactfeatureref{env-blacklist} &
+No & No & No & No & Yes \\
+
 Profile \t{IUSE} injection & \compactfeatureref{profile-iuse-inject} &
 No & No & Yes & Yes & Yes \\
 
@@ -483,6 +486,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{domo} installs to \t{/usr}, \featureref{domo-path}.
 \item Controllable stripping and \t{dostrip}, \featureref{dostrip}.
 \item Version manipulation and comparison commands, \featureref{ver-commands}.
+\item \t{ENV_BLACKLIST}, \featureref{env-blacklist}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 32ed634..055fb89 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -334,18 +334,24 @@ must not be set.
 \featurelabel{locale-settings} The package manager must ensure that the 
\t{LC_CTYPE} and
 \t{LC_COLLATE} locale categories are equivalent to the POSIX locale, as far as 
characters in the
 ASCII range (U+ to U+007F) are concerned. Only for EAPIs listed in such a 
manner in
-table~\ref{tab:locale-settings}.
+table~\ref{tab:system-env-vars}.
+
+\featurelabel{env-blacklist} If the ebuild uses EAPI listed in 
table~\ref{tab:system-env-vars}
+as supporting the \t{ENV_BLACKLIST} variable, then it specifies a 
whitespace-separated list
+of variable names. All variables whose names are included in that list must 
not be set.
 
 \ChangeWhenAddingAnEAPI{7}
-\begin{centertable}{Locale settings for EAPIs}
-\label{tab:locale-settings}
-\begin{tabular}{ll}
+\begin{centertable}{System environment variables}
+\label{tab:system-env-vars}
+\begin{tabular}{lll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{1}{c}{\textbf{Sane \t{LC_CTYPE} and \t{LC_COLLATE}?}} \\
+  \multicolumn{1}{c}{\textbf{Sane \t{LC_CTYPE} and \t{LC_COLLATE}?}} &
+  \multicolumn{1}{c}{\textbf{\t{ENV_BLACKLIST}?}} \\
   \midrule
-  0, 1, 2, 3, 4, 5  & Undefined \\
-  6, 7  & Yes   \\
+  0, 1, 2, 3, 4, 5  & Undefined & No  \\
+  6 & Yes   & No  \\
+  7 & Yes   & Yes \\  
   \bottomrule
 \end{tabular}
 \end{centertable}

diff --git a/profile-variables.tex b/profile-variables.tex
index 309f9e9..fa967b2 100644
--- a/profile-variables.tex
+++ b/profile-variables.tex
@@ -29,6 +29,10 @@ incrementally; otherwise, the following variables may or may 
not be treated incr
 \item \t{USE_EXPAND_UNPREFIXED}
 \end{compactitem}
 
+If the package manager supports any EAPI listed in 
table~\ref{tab:system-env-vars} as supporting
+\t{ENV_BLACKLIST} variable, this variable must be treated incrementally. 
Otherwise, it may or may
+not be treated incrementally.
+
 Other variables, except where they affect only package-manager-specific 
functionality (such as
 Portage's \t{FEATURES} variable), must not be treated incrementally---later 
definitions shall
 completely override those in parent profiles.



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

2017-11-09 Thread Michał Górny
commit: 7177e5fa5d5dd606bc634440868b9fa99700ec90
Author: Michał Górny  gentoo  org>
AuthorDate: Thu Nov  9 16:33:34 2017 +
Commit: Michał Górny  gentoo  org>
CommitDate: Thu Nov  9 16:49:53 2017 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=7177e5fa

EAPI 7 has ENV_BLACKLIST

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index b666500..3f2 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -181,6 +181,9 @@ Parallel tests & \compactfeatureref{parallel-tests} &
 Sane locale settings & \compactfeatureref{locale-settings} &
 Undefined & Undefined & Undefined & Yes & Yes \\
 
+\t{ENV_BLACKLIST} & \compactfeatureref{env-blacklist} &
+No & No & No & No & Yes \\
+
 Profile \t{IUSE} injection & \compactfeatureref{profile-iuse-inject} &
 No & No & Yes & Yes & Yes \\
 
@@ -483,6 +486,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{domo} installs to \t{/usr}, \featureref{domo-path}.
 \item Controllable stripping and \t{dostrip}, \featureref{dostrip}.
 \item Version manipulation and comparison commands, \featureref{ver-commands}.
+\item \t{ENV_BLACKLIST}, \featureref{env-blacklist}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 32ed634..0382f04 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -334,22 +334,44 @@ must not be set.
 \featurelabel{locale-settings} The package manager must ensure that the 
\t{LC_CTYPE} and
 \t{LC_COLLATE} locale categories are equivalent to the POSIX locale, as far as 
characters in the
 ASCII range (U+ to U+007F) are concerned. Only for EAPIs listed in such a 
manner in
-table~\ref{tab:locale-settings}.
+table~\ref{tab:system-env-vars}.
 
 \ChangeWhenAddingAnEAPI{7}
-\begin{centertable}{Locale settings for EAPIs}
-\label{tab:locale-settings}
-\begin{tabular}{ll}
+\begin{centertable}{System environment variables}
+\label{tab:system-env-vars}
+\begin{tabular}{lll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{1}{c}{\textbf{Sane \t{LC_CTYPE} and \t{LC_COLLATE}?}} \\
+  \multicolumn{1}{c}{\textbf{Sane \t{LC_CTYPE} and \t{LC_COLLATE}?}} &
+  \multicolumn{1}{c}{\textbf{\t{ENV_BLACKLIST}?}} \\
   \midrule
-  0, 1, 2, 3, 4, 5  & Undefined \\
-  6, 7  & Yes   \\
+  0, 1, 2, 3, 4, 5  & Undefined & No  \\
+  6 & Yes   & No  \\
+  7 & Yes   & Yes \\  
   \bottomrule
 \end{tabular}
 \end{centertable}
 
+\subsection{Environment variable blacklist}
+
+\featurelabel{env-blacklist} If the ebuild uses EAPI listed in 
table~\ref{tab:system-env-vars}
+as supporting the \t{ENV_BLACKLIST} variable, the package manager must 
construct the environment
+variable blacklist in the following manner.
+
+The value of the \t{ENV_BLACKLIST} variable as specified by the profile 
\t{make.defaults} files
+provides a whitespace-separated list of variable names. Each item can 
optionally be preceded
+by a hyphen. The blacklist is initially empty. For each item:
+
+\begin{compactitem}
+\item If the item is not preceded by a hyphen, then the variable is added to 
the blacklist.
+\item If the item is preceded by a hyphen, then the variable is removed from 
the blacklist.
+\item As a special case, \t{*} adds all the variables currently set in the 
environment
+   to the blacklist, except for variables explicitly set by the package 
manager.
+\end{compactitem}
+
+Once the blacklist is constructed, the package manager must ensure that all 
variable whose names
+are listed in it are unset in the ebuild environment.
+
 \subsection{USE and IUSE handling}
 \label{sec:use-iuse-handling}
 

diff --git a/profile-variables.tex b/profile-variables.tex
index 309f9e9..fa967b2 100644
--- a/profile-variables.tex
+++ b/profile-variables.tex
@@ -29,6 +29,10 @@ incrementally; otherwise, the following variables may or may 
not be treated incr
 \item \t{USE_EXPAND_UNPREFIXED}
 \end{compactitem}
 
+If the package manager supports any EAPI listed in 
table~\ref{tab:system-env-vars} as supporting
+\t{ENV_BLACKLIST} variable, this variable must be treated incrementally. 
Otherwise, it may or may
+not be treated incrementally.
+
 Other variables, except where they affect only package-manager-specific 
functionality (such as
 Portage's \t{FEATURES} variable), must not be treated incrementally---later 
definitions shall
 completely override those in parent profiles.



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

2017-11-07 Thread Ulrich Müller
commit: 7d9021e82e1232585bea6490f1f3b125a8ae44cb
Author: Ulrich Müller  gentoo  org>
AuthorDate: Tue Nov  7 18:21:57 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Tue Nov  7 18:21:57 2017 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=7d9021e8

fixup a0c0b79 "EAPI 7 has BDEPEND"

 dependencies.tex | 40 
 1 file changed, 20 insertions(+), 20 deletions(-)

diff --git a/dependencies.tex b/dependencies.tex
index d1fe3c7..3f3ef79 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -57,14 +57,28 @@ There are three classes of dependencies supported by 
ebuilds:
 as supporting \t{BDEPEND}, the build dependencies are split into two 
subclasses:
 
 \begin{compactitem}
-\item Build dependencies that are binary compatible with the native build 
system
-/ CBUILD (\t{BDEPEND}). The ebuild is allowed to call binary executables
-installed by this kind of dependency.
-\item Build dependencies that are binary compatible with the system being built
-/ CHOST (\t{DEPEND}). The ebuild must not execute binary executables 
installed
-by this kind of dependency.
+\item \t{BDEPEND} build dependencies that are binary compatible with the 
native build system
+(\t{CBUILD}). The ebuild is allowed to call binary executables installed 
by this kind of
+dependency.
+\item \t{DEPEND} build dependencies that are binary compatible with the 
system being built
+(\t{CHOST}). The ebuild must not execute binary executables installed by 
this kind of
+dependency.
 \end{compactitem}
 
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPIs supporting additional dependency types}
+\label{tab:depend-table}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Supports \t{BDEPEND}?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6 & No  \\
+  7   & Yes \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 Table~\ref{tab:phase-function-dependency-classes} lists dependencies which 
must be satisfied before
 a particular phase function is executed. Table~\ref{tab:dep-class-api} 
summarises additional
 interfaces related to the dependency classes.
@@ -119,20 +133,6 @@ 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}
-\begin{centertable}{EAPIs supporting additional dependency types}
-\label{tab:depend-table}
-\begin{tabular}{ll}
-  \toprule
-  \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{1}{c}{\textbf{Supports \t{BDEPEND}?}} \\
-  \midrule
-  0, 1, 2, 3, 4, 5, 6 & No  \\
-  7   & Yes \\
-  \bottomrule
-\end{tabular}
-\end{centertable}
-
-\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting \t{SRC_URI} arrows}
 \label{tab:uri-arrows-table}
 \begin{tabular}{ll}



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

2017-11-07 Thread Ulrich Müller
commit: 529856bc8731d63ac5d511843fe939da0d292c4b
Author: Ulrich Müller  gentoo  org>
AuthorDate: Tue Nov  7 17:21:09 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Tue Nov  7 17:21:09 2017 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=529856bc

Add chewi to acknowledgements.

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

diff --git a/introduction.tex b/introduction.tex
index 5990f86..afbe708 100644
--- a/introduction.tex
+++ b/introduction.tex
@@ -62,9 +62,10 @@ applicable to tools or other applications that interact with 
ebuilds or ebuild r
 Thanks to Mike Kelly (package manager provided utilities, 
section~\ref{sec:pkg-mgr-commands}),
 Danny van Dyk (ebuild functions, section~\ref{sec:ebuild-functions}), David 
Leverton (various
 sections), Petteri Räty (environment state, 
section~\ref{sec:ebuild-env-state}), Michał Górny
-(various sections), Andreas K. Hüttel (stable use masking, 
section~\ref{sec:use-masking}) and
-Zac Medico (sub-slots, section~\ref{sec:mandatory-vars}) for contributions. 
Thanks also to
-Mike Frysinger and Brian Harring for proof-reading and suggestions for fixes 
and/or clarification.
+(various sections), Andreas K. Hüttel (stable use masking, 
section~\ref{sec:use-masking}),
+Zac Medico (sub-slots, section~\ref{sec:mandatory-vars}) and James Le Cuirot 
(build dependencies,
+section~\ref{sec:ebuild-env-vars}) for contributions. Thanks also to Mike 
Frysinger and
+Brian Harring for proof-reading and suggestions for fixes and/or clarification.
 
 % vim: set filetype=tex fileencoding=utf8 et tw=100 spell spelllang=en :
 



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

2017-11-07 Thread Ulrich Müller
commit: 058735c3cfb307dbaa597d1554ba034039e59974
Author: Ulrich Müller  gentoo  org>
AuthorDate: Tue Nov  7 17:20:39 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Tue Nov  7 17:20:46 2017 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=058735c3

Add dilfridge and zmedico to acknowledgements.

 ebuild-vars.tex  | 1 +
 introduction.tex | 7 ---
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index 6f0e979..5169e0a 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -21,6 +21,7 @@ Globally defined ebuild variables without a special meaning 
must similarly not r
 variable data.
 
 \section{Mandatory Ebuild-defined Variables}
+\label{sec:mandatory-vars}
 
 All ebuilds must define at least the following variables:
 

diff --git a/introduction.tex b/introduction.tex
index fa47f7b..5990f86 100644
--- a/introduction.tex
+++ b/introduction.tex
@@ -61,9 +61,10 @@ applicable to tools or other applications that interact with 
ebuilds or ebuild r
 
 Thanks to Mike Kelly (package manager provided utilities, 
section~\ref{sec:pkg-mgr-commands}),
 Danny van Dyk (ebuild functions, section~\ref{sec:ebuild-functions}), David 
Leverton (various
-sections), Petteri Räty (environment state, 
section~\ref{sec:ebuild-env-state}) and Michał Górny
-(various sections) for contributions. Thanks also to Mike Frysinger and Brian 
Harring for
-proof-reading and suggestions for fixes and/or clarification.
+sections), Petteri Räty (environment state, 
section~\ref{sec:ebuild-env-state}), Michał Górny
+(various sections), Andreas K. Hüttel (stable use masking, 
section~\ref{sec:use-masking}) and
+Zac Medico (sub-slots, section~\ref{sec:mandatory-vars}) for contributions. 
Thanks also to
+Mike Frysinger and Brian Harring for proof-reading and suggestions for fixes 
and/or clarification.
 
 % vim: set filetype=tex fileencoding=utf8 et tw=100 spell spelllang=en :
 



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

2017-10-09 Thread Ulrich Müller
commit: 395ea17897c271621edfa5f71b99d57182adc9aa
Author: James Le Cuirot  gentoo  org>
AuthorDate: Sun Sep 17 21:39:27 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Oct  9 17:16:34 2017 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=395ea178

EAPI 7 has BROOT

Bug: https://bugs.gentoo.org/317337

 eapi-differences.tex |  4 
 ebuild-env-vars.tex  | 33 +
 2 files changed, 25 insertions(+), 12 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 1ee1bfe..d6eab8d 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{BROOT} & \compactfeatureref{broot} &
+No & No & No & No & Yes \\
+
 \t{BDEPEND} & \compactfeatureref{bdepend} &
 No & No & No & No & Yes \\
 
@@ -413,6 +416,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{SYSROOT} and \t{ESYSROOT} added, \featureref{sysroot}.
 \item \t{econf} adds \t{-{}-with-sysroot}, \featureref{econf-options}.
 \item \t{BDEPEND}, \featureref{bdepend}.
+\item \t{BROOT}, \featureref{broot}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index e24a065..e91f36e 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -144,6 +144,13 @@ variable.
 for convenience.  See also the \t{EPREFIX} variable. Only for EAPIs listed
 in table~\ref{tab:offset-env-vars-table} as supporting \t{ESYSROOT}. The 
presence of a trailing
 slash EAPI-dependent as listed in table~\ref{tab:trailing-slash}. \\
+\t{BROOT} &
+\t{src_*} &
+No &
+\featurelabel{broot} The absolute path to the root directory containing 
build dependencies
+satisfied by 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}.
+The presence of a trailing slash EAPI-dependent as listed in 
table~\ref{tab:trailing-slash}. \\
 \t{T} &
 All &
 Partially\footnote{Consistent and preserved across a single connected 
sequence of install or
@@ -253,19 +260,20 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various added env variables}
 \label{tab:added-env-vars-table}
-\begin{tabular}{ll}
+\begin{tabular}{lll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{c}{\textbf{\t{MERGE_TYPE}?}} &
   \multicolumn{1}{P{6em}}{\textbf{\t{REPLACING_VERSIONS}?}} &
   \multicolumn{1}{P{6em}}{\textbf{\t{REPLACED_BY_VERSION}?}} &
   \multicolumn{1}{P{6em}}{\textbf{\t{EBUILD_PHASE_FUNC}?}} &
-  \multicolumn{1}{P{6em}}{\textbf{\t{SYSROOT}?}} \\
+  \multicolumn{1}{P{6em}}{\textbf{\t{SYSROOT}?}} &
+  \multicolumn{1}{P{6em}}{\textbf{\t{BROOT}?}} \\
   \midrule
-  0, 1, 2, 3& No  & No  & No  & No  & No  \\
-  4 & Yes & Yes & Yes & No  & No  \\
-  5, 6  & Yes & Yes & Yes & Yes & No  \\
-  7 & Yes & Yes & Yes & Yes & Yes \\
+  0, 1, 2, 3& No  & No  & No  & No  & No  & No  \\
+  4 & Yes & Yes & Yes & No  & No  & No  \\
+  5, 6  & Yes & Yes & Yes & Yes & No  & No  \\
+  7 & Yes & Yes & Yes & Yes & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -288,7 +296,7 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting offset-prefix env variables}
 \label{tab:offset-env-vars-table}
-\begin{tabular}{l}
+\begin{tabular}{ll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{c}{\textbf{\t{EPREFIX}?}} &
@@ -460,17 +468,18 @@ If the path specifies the system root directory, it will 
be empty.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Variables that always or never end with a trailing slash}
 \label{tab:trailing-slash}
-\begin{tabular}{}
+\begin{tabular}{l}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{3}{c}{\textbf{Ends with a trailing slash?}} \\
+  \multicolumn{4}{c}{\textbf{Ends with a trailing slash?}} \\
   &
   \t{ROOT}, \t{EROOT} &
   \t{D}, \t{ED} &
-  \t{SYSROOT}, \t{ESYSROOT} \\
+  \t{SYSROOT}, \t{ESYSROOT} &
+  \t{BROOT} \\
   \midrule
-  0, 1, 2, 3, 4, 5, 6 & always & always & n/a\\
-  7   & never  & never  & never  \\
+  0, 1, 2, 3, 4, 5, 6 & always & always & n/a& n/a\\
+  7   & never  & never  & never  & never  \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2017-10-09 Thread Ulrich Müller
commit: 58a7ba247d84e26c60697127dcc0490cd59aa8f4
Author: Michał Górny  gentoo  org>
AuthorDate: Wed Oct  4 17:44:06 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Oct  9 17:22:19 2017 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=58a7ba24

EAPI 7 has sandbox directory removal functions.

Bug: https://bugs.gentoo.org/630422

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index d08d461..beba23f 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{rm*} sandbox functions & \compactfeatureref{sandbox-rm} &
+No & No & No & No & Yes \\
+
 \t{IUSE_RUNTIME} & \compactfeatureref{iuse-runtime} &
 No & No & No & No & Yes \\
 
@@ -475,6 +478,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item automatic enforcing of \t{REQUIRED_USE} is supported, 
\featureref{auto-req-use}.
 \item binding leftmost-of (\t{||=}) dependency group is supported, 
\featureref{binding-leftmost-of}.
 \item runtime-modifiable USE flags (\t{IUSE_RUNTIME}) are supported, 
\featureref{iuse-runtime}.
+\item sandbox path removal flags (\t{rm*}) are supported, 
\featureref{sandbox-rm}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 287c71d..ff54d69 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -88,6 +88,35 @@ argument. Ebuilds must not run any of these commands once 
the current phase func
 \item[adddeny] Add a directory to the deny list.
 \end{description}
 
+\featurelabel{sandbox-rm} Additionally, in EAPIs listed in 
table~\ref{tab:sandbox-command-table}
+as supporting the respective commands, the following commands are available:
+\begin{description}
+\item[rmread] Remove a directory from the permitted read list.
+\item[rmwrite] Remove a directory from the permitted write list.
+\item[rmpredict] Remove a directory from the predict list.
+\item[rmdeny] Remove a directory from the deny list.
+\end{description}
+
+All of those commands match paths exactly. Removing a directory that is not 
present on the list
+is silently ignored.
+
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{Additional sandbox commands by EAPI}
+\label{tab:sandbox-command-table}
+\begin{tabular}{l}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{\t{rmread}?}} &
+  \multicolumn{1}{c}{\textbf{\t{rmwrite}?}} &
+  \multicolumn{1}{c}{\textbf{\t{rmpredict}?}} &
+  \multicolumn{1}{c}{\textbf{\t{rmdeny}?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6 & No  & No  & No  & No  \\
+  7   & Yes & Yes & Yes & Yes \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \subsection{Package manager query commands}
 These commands are used to extract information about the system. Ebuilds must 
not run any of
 these commands in parallel with any other package manager command. Ebuilds 
must not run any of



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

2017-10-09 Thread Ulrich Müller
commit: e6205491820270d9747803e6c9789b4645ba95f9
Author: Michał Górny  gentoo  org>
AuthorDate: Wed Oct  4 16:19:16 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Oct  9 17:16:34 2017 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=e6205491

EAPI 7 has BDEPEND

Bug: https://bugs.gentoo.org/317337

 dependencies.tex | 36 
 eapi-differences.tex |  4 
 ebuild-vars.tex  |  1 +
 eclasses.tex | 10 +-
 metadata-cache.tex   |  2 ++
 5 files changed, 44 insertions(+), 9 deletions(-)

diff --git a/dependencies.tex b/dependencies.tex
index f812686..0d8933b 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -15,7 +15,7 @@
   None (ebuilds can rely only on the packages in the system~set) \\
   \addlinespace
   \t{src_unpack}, \t{src_prepare}, \t{src_configure}, \t{src_compile}, 
\t{src_test},
-  \t{src_install} & \t{DEPEND} \\
+  \t{src_install} & \t{DEPEND}, \t{BDEPEND} \\
   \addlinespace
   \t{pkg_preinst}, \t{pkg_postinst}, \t{pkg_prerm}, \t{pkg_postrm} &
   \t{RDEPEND} (unless the particular dependency results in a circular 
dependency, in which
@@ -38,6 +38,18 @@ There are three classes of dependencies supported by ebuilds:
 the package manager finishes the batch of installs.
 \end{compactitem}
 
+\featurelabel{bdepend} Additionally, in EAPIs listed in 
table~\ref{tab:depend-table}
+as supporting \t{BDEPEND}, the build dependencies are split into two 
subclasses:
+
+\begin{compactitem}
+\item Build dependencies that are binary compatible with the native build 
system
+/ CBUILD (\t{BDEPEND}). The ebuild is allowed to call binary executables
+installed by this kind of dependency.
+\item Build dependencies that are binary compatible with the system being built
+/ CHOST (\t{DEPEND}). The ebuild must not execute binary executables 
installed
+by this kind of dependency.
+\end{compactitem}
+
 Table~\ref{tab:phase-function-dependency-classes} lists dependencies which 
must be satisfied before
 a particular phase function is executed.
 
@@ -50,7 +62,8 @@ The following elements are recognised in at least one class 
of specification. Al
 be surrounded on both sides by whitespace, except at the start and end of the 
string.
 
 \begin{compactitem}
-\item A package dependency specification. Permitted in \t{DEPEND}, 
\t{RDEPEND}, \t{PDEPEND}.
+\item A package dependency specification. Permitted in \t{DEPEND}, 
\t{BDEPEND}, \t{RDEPEND},
+\t{PDEPEND}.
 \item A URI, in the form \t{proto://host/path}. Permitted in \t{SRC_URI} and 
\t{HOMEPAGE}\@.
 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
@@ -68,7 +81,7 @@ 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{RDEPEND}, \t{PDEPEND}, \t{LICENSE}, 
\t{REQUIRED_USE}.
+Permitted in \t{DEPEND}, \t{BDEPEND}, \t{RDEPEND}, \t{PDEPEND}, 
\t{LICENSE}, \t{REQUIRED_USE}.
 \item An exactly-one-of group, which consists of the string 
\t{\textasciicircum\textasciicircum},
 followed by whitespace, 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
@@ -93,6 +106,20 @@ 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}
+\begin{centertable}{EAPIs supporting additional dependency types}
+\label{tab:depend-table}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Supports \t{BDEPEND}?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6 & No  \\
+  7   & Yes \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting \t{SRC_URI} arrows}
 \label{tab:uri-arrows-table}
 \begin{tabular}{ll}
@@ -285,7 +312,8 @@ indicates that the package will not break if the matched 
package is uninstalled
 a different matching package in a different slot.
 \item[=] Indicates that any slot value is acceptable. In addition, for runtime 
dependencies,
 indicates that the package will break unless a matching package with slot and 
sub-slot equal to the
-slot and sub-slot of the best installed version at the time the package was 
built is available.
+slot and sub-slot of the best version installed to \t{ESYSROOT} at the time 
the package was built
+is 

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

2017-10-09 Thread Ulrich Müller
commit: 4201dcb2332281ed8d1bd24a042b6c5bd1aeb794
Author: Michał Górny  gentoo  org>
AuthorDate: Thu Sep 28 16:20:11 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Oct  9 17:12:08 2017 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=4201dcb2

EAPI 7 no longer adds trailing slash to ROOT, EROOT, D, ED.

Bug: https://bugs.gentoo.org/465772

 eapi-differences.tex |  5 +
 ebuild-env-vars.tex  | 58 ++--
 2 files changed, 52 insertions(+), 11 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 0c47d9b..49e6be9 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+Trailing slash in \t{ROOT}, \t{D}... & \compactfeatureref{trailing-slash} &
+Yes & Yes & Yes & Yes & No \\
+
 Output cmds can use stdout & \compactfeatureref{output-no-stdout} &
 Yes & Yes & Yes & Yes & No \\
 
@@ -395,6 +398,8 @@ EAPI 7 is EAPI 6 with the following changes:
 \item Version manipulation and comparison functions added, 
\featureref{ver-functions}.
 \item \t{eqawarn} added, \featureref{eqawarn}.
 \item Output commands can no longer use stdout, \featureref{output-no-stdout}.
+\item \t{ROOT}, \t{EROOT}, \t{D}, \t{ED} no longer end with a trailing slash,
+\featureref{trailing-slash}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 1851aba..fe61ac5 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -121,14 +121,15 @@ variable.
The absolute path to the root directory into which the package is to be 
merged.  Phases which run
with full filesystem access must not touch any files outside of the 
directory given in
\t{ROOT}\@. Also of note is that in a cross-compiling environment, binaries 
inside of \t{ROOT}
-   will not be executable on the build machine, so ebuilds must not call them. 
\t{ROOT} must be
-   non-empty and end in a trailing slash. \\
+   will not be executable on the build machine, so ebuilds must not call them. 
The presence of
+   a trailing slash is EAPI-dependent as listed in 
table~\ref{tab:trailing-slash}. \\
 \t{EROOT} &
 \t{pkg_*} &
 No &
-Contains the path \t{\$\{ROOT\%/\}\$\{EPREFIX\}/} for convenience. See 
also the
-\t{EPREFIX} variable. Only for EAPIs listed in 
table~\ref{tab:offset-env-vars-table} as
-supporting \t{EROOT}. \\
+Contains the concatenation of the paths in \t{ROOT} and \t{EPREFIX} 
variables, for convenience.
+See also the \t{EPREFIX} variable. Only for EAPIs listed
+in table~\ref{tab:offset-env-vars-table} as supporting \t{EROOT}. The 
presence of a trailing
+slash EAPI-dependent as listed in table~\ref{tab:trailing-slash}. \\
 \t{T} &
 All &
 Partially\footnote{Consistent and preserved across a single connected 
sequence of install or
@@ -159,18 +160,21 @@ variable.
 \t{src_install} &
 No &
 Contains the full path to the image directory into which the package 
should be installed.
-Must be non-empty and end in a trailing slash. \\
+The presence of a trailing slash is EAPI-dependent as listed in 
table~\ref{tab:trailing-slash}.
+\\
 \t{D} (continued) &
 \t{pkg_preinst}, \t{pkg_postinst} &
 Yes &
-Contains the full path to the image that is about to be or has just been 
merged. Must be
-non-empty and end in a trailing slash. \\
+Contains the full path to the image that is about to be or has just been 
merged.
+The presence of a trailing slash is EAPI-dependent as listed in 
table~\ref{tab:trailing-slash}.
+\\
 \t{ED} &
 \t{src_install}, \t{pkg_preinst}, \t{pkg_postinst} &
 See \t{D} &
-Contains the path \t{\$\{D\%/\}\$\{EPREFIX\}/} for convenience. See also 
the
-\t{EPREFIX} variable. Only for EAPIs listed in 
table~\ref{tab:offset-env-vars-table} as
-supporting \t{ED}. \\
+Contains the concatenation of the paths in \t{D} and \t{EPREFIX} 
variables, for convenience.
+See also the \t{EPREFIX} variable. Only for EAPIs listed
+in table~\ref{tab:offset-env-vars-table} as supporting \t{ED}. The 
presence of a trailing
+slash EAPI-dependent as listed in table~\ref{tab:trailing-slash}. \\
 \t{DESTTREE} &
 \t{src_install} &
 No &
@@ -420,6 +424,38 @@ behaviour of offset-prefix aware and agnostic is the same 
when \t{EPREFIX} is se
 string in offset-prefix aware EAPIs. The latter do have the variables \t{ED} 
and \t{EROOT} properly
 set, though.
 
+\subsection{Path variables and trailing slash}
+\label{sec:trailing-slash}
+
+Unless specified otherwise, the paths provided through package manager 
variables do not end with
+a trailing slash and can not be empty. A few exceptions to that rule are listed
+in table~\ref{tab:trailing-slash} along with applicable EAPIs.
+
+For EAPIs where those variables are defined to always end with a trailing 
slash, 

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

2017-10-09 Thread Ulrich Müller
commit: 7c59313e9621a2ca7d93ae5a60e3460198766f56
Author: Michał Górny  gentoo  org>
AuthorDate: Thu Sep 28 14:10:20 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Oct  9 17:12:08 2017 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=7c59313e

EAPI 7 disallows stdout output of output functions

Bug: https://bugs.gentoo.org/483240

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 8a1e55a..0c47d9b 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+Output cmds can use stdout & \compactfeatureref{output-no-stdout} &
+Yes & Yes & Yes & Yes & No \\
+
 \t{eqawarn} & \compactfeatureref{eqawarn} &
 No & No & No & No & Yes \\
 
@@ -391,6 +394,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{dohtml} banned, \featureref{banned-commands}.
 \item Version manipulation and comparison functions added, 
\featureref{ver-functions}.
 \item \t{eqawarn} added, \featureref{eqawarn}.
+\item Output commands can no longer use stdout, \featureref{output-no-stdout}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 91f38c0..76f5bff 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -114,8 +114,12 @@ These commands display messages to the user. Unless 
otherwise stated, the entire
 used as a message, with backslash-escaped characters interpreted as for the 
\t{echo -e} command of
 bash, notably \t{\textbackslash t} for a horizontal tab, \t{\textbackslash n} 
for a new line, and
 \t{\textbackslash\textbackslash} for a literal backslash. Ebuilds must not run 
any of these commands
-once the current phase function has returned. Unless otherwise noted, output 
may be sent to stdout,
-stderr or some other appropriate facility.
+once the current phase function has returned.
+
+\featurelabel{output-no-stdout} Unless otherwise noted, output may be sent to 
stderr or some other
+appropriate facility. In EAPIs listed in table~\ref{tab:output-commands} as 
not allowing stdout
+output, using stdout as an output facility is forbidden.
+
 \begin{description}
 \item[einfo] Displays an informational message.
 \item[einfon] Displays an informational message without a trailing newline.
@@ -139,13 +143,14 @@ stderr or some other appropriate facility.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Output commands for EAPIs}
 \label{tab:output-commands}
-\begin{tabular}{ll}
+\begin{tabular}{lll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{1}{c}{\textbf{\t{eqawarn}?}} \\
+  \multicolumn{1}{c}{\textbf{\t{eqawarn}?}} &
+  \multicolumn{1}{c}{\textbf{can output to stdout?}} \\
   \midrule
-  0, 1, 2, 3, 4, 5, 6  & No  \\
-  7& Yes \\
+  0, 1, 2, 3, 4, 5, 6  & No  & Yes \\
+  7& Yes & No  \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2017-10-09 Thread Ulrich Müller
commit: 829d47f14a7858bfefd71dcc7507d99fdcaf3939
Author: James Le Cuirot  gentoo  org>
AuthorDate: Tue Sep 19 21:36:40 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Oct  9 17:15:26 2017 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=829d47f1

EAPI 7: econf adds --with-sysroot

Bug: https://bugs.gentoo.org/317337

 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 7871d5c..3932f15 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -212,7 +212,7 @@ Option \t{-{}-host-root} & 
\compactfeatureref{host-root-option} &
 & disable dependency tracking &
 disable dependency tracking, disable silent rules &
 disable dependency tracking, disable silent rules, docdir, htmldir &
-disable dependency tracking, disable silent rules, docdir, htmldir \\
+disable dependency tracking, disable silent rules, docdir, htmldir, with 
sysroot \\
 
 \t{dodoc -r} & \compactfeatureref{dodoc} &
 No & Yes & Yes & Yes & Yes \\
@@ -408,6 +408,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \featureref{trailing-slash}.
 \item \t{patch} is compatible with GNU patch 2.7, \featureref{gnu-patch}.
 \item \t{SYSROOT} and \t{ESYSROOT} added, \featureref{sysroot}.
+\item \t{econf} adds \t{-{}-with-sysroot}, \featureref{econf-options}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 76f5bff..96b9df4 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -283,6 +283,9 @@ current phase function has returned.
 \item -{}-htmldir must be \t{\$\{EPREFIX\}/usr/share/doc/\$\{PF\}/html}, 
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{-{}-htmldir} occurs in the output of \t{configure -{}-help}.
+\item -{}-with-sysroot must be \t{\$\{ESYSROOT\}}, 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{-{}-with-sysroot} occurs in the output of \t{configure 
-{}-help}.
 \item -{}-host must be the value of the \t{CHOST} environment variable.
 \item -{}-libdir must be set according to Algorithm~\ref{alg:econf-libdir}.
 \item -{}-disable-dependency-tracking, if the EAPI is listed in
@@ -296,18 +299,20 @@ current phase function has returned.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Extra \t{econf} arguments for EAPIs}
 \label{tab:econf-options-table}
-\begin{tabular}{l}
+\begin{tabular}{ll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{c}{\textbf{-{}-disable-dependency-tracking}} &
   \multicolumn{1}{c}{\textbf{-{}-disable-silent-rules}} &
   \multicolumn{1}{c}{\textbf{-{}-docdir}} &
-  \multicolumn{1}{c}{\textbf{-{}-htmldir}} \\
+  \multicolumn{1}{c}{\textbf{-{}-htmldir}} &
+  \multicolumn{1}{c}{\textbf{-{}-with-sysroot}} \\
   \midrule
-  0, 1, 2, 3& No  & No  & No  & No  \\
-  4 & Yes & No  & No  & No  \\
-  5 & Yes & Yes & No  & No  \\
-  6, 7  & Yes & Yes & Yes & Yes \\
+  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 & Yes & Yes & Yes & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2017-10-09 Thread Ulrich Müller
commit: 23f44cea243484e41000dc48ef4d69c20bbe870a
Author: Michał Górny  gentoo  org>
AuthorDate: Fri Sep 29 03:13:57 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Oct  9 17:16:34 2017 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=23f44cea

EAPI 7 removes DESTTREE and INSDESTTREE.

Bug: https://bugs.gentoo.org/173630

 eapi-differences.tex |  8 
 ebuild-env-vars.tex  | 18 --
 2 files changed, 20 insertions(+), 6 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 1bb0989..968dba1 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,12 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{DESTTREE} & \compactfeatureref{desttree} &
+Yes & Yes & Yes & Yes & No \\
+
+\t{INSDESTTREE} & \compactfeatureref{insdesttree} &
+Yes & Yes & Yes & Yes & No \\
+
 \t{package.provided} & \compactfeatureref{package-provided} &
 Yes & Yes & Yes & Yes & No \\
 
@@ -423,6 +429,8 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{best_version} and \t{has_version} drops the \t{-{}-host-root} option 
in favor of the
   \t{-b}, \t{-d}, and \t{-r} options, \featureref{pm-query-options}.
 \item \t{package.provided} in profiles banned, \featureref{package-provided}.
+\item \t{DESTTREE} removed, \featureref{desttree}.
+\item \t{INSDESTTREE} removed, \featureref{insdesttree}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index e91f36e..0434083 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -199,11 +199,14 @@ variable.
 \t{DESTTREE} &
 \t{src_install} &
 No &
-Controls the location where \t{dobin}, \t{dolib}, \t{domo}, and \t{dosbin} 
install things. \\
+\featurelabel{desttree} Controls the location where \t{dobin}, \t{dolib}, 
\t{domo},
+and \t{dosbin} install things.  Only for EAPIs listed in 
table~\ref{tab:removed-env-vars-table}
+as supporting \t{DESTTREE}. \\
 \t{INSDESTTREE} &
 \t{src_install} &
 No &
-Controls the location where \t{doins} installs things. \\
+\featurelabel{insdesttree} Controls the location where \t{doins} installs 
things. Only for EAPIs
+listed in table~\ref{tab:removed-env-vars-table} as supporting 
\t{INSDESTTREE}. \\
 \t{USE} &
 All &
 Yes &
@@ -281,14 +284,17 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various removed env variables}
 \label{tab:removed-env-vars-table}
-\begin{tabular}{lll}
+\begin{tabular}{l}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{c}{\textbf{\t{AA}?}} &
-  \multicolumn{1}{c}{\textbf{\t{KV}?}} \\
+  \multicolumn{1}{c}{\textbf{\t{KV}?}} &
+  \multicolumn{1}{c}{\textbf{\t{DESTTREE}?}} &
+  \multicolumn{1}{c}{\textbf{\t{INSDESTTREE}?}} \\
   \midrule
-  0, 1, 2, 3& Yes & Yes \\
-  4, 5, 6, 7& No  & No  \\
+  0, 1, 2, 3& Yes & Yes & Yes & Yes \\
+  4, 5, 6   & No  & No  & Yes & Yes \\
+  7 & No  & No  & No  & No  \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2017-10-09 Thread Ulrich Müller
commit: c22ec77650eb8b343a4f3864f05bfb55d694a8c3
Author: Michał Górny  gentoo  org>
AuthorDate: Wed Oct  4 16:10:08 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Oct  9 17:20:10 2017 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=c22ec776

EAPI 7 has automatic USE enforcing.

Bug: https://bugs.gentoo.org/609338

 dependencies.tex | 68 +++-
 eapi-differences.tex |  4 
 profiles.tex |  1 +
 3 files changed, 72 insertions(+), 1 deletion(-)

diff --git a/dependencies.tex b/dependencies.tex
index 6a92542..c4c23c1 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -384,16 +384,82 @@ It is an error for an ebuild to use a conditional use 
dependency when that ebuil
 flag in \t{IUSE_EFFECTIVE}.
 
 \subsection{USE state constraints}
+
 \label{sec:required-use}
 \t{REQUIRED_USE} contains a list of assertions that must be met by the 
configuration of \t{USE}
 flags to be valid for this ebuild. In order to be matched, a \t{USE} flag in a 
terminal element
 must be enabled (or disabled if it has an exclamation mark prefix).
 
 If the package manager encounters a package version where \t{REQUIRED_USE} 
assertions are not met,
-it must treat this package version as if it was masked. No phase functions 
must be called.
+it should attempt to automatically enforce the necessary flags as detailed
+in section~\ref{sec:enforce-required-use}. If this feature is not supported or 
it fails to resolve
+the problem, the package manager must treat this package version as if it was 
masked. No phase
+functions must be called in that case.
 
 It is an error for a flag to be used if it is not included in 
\t{IUSE_EFFECTIVE}.
 
+\subsubsection{Automatic enforcing of REQUIRED_USE}
+\label{sec:enforce-required-use}
+
+\featurelabel{auto-req-use} In EAPIs listed in 
table~\ref{tab:enforce-required-use-table} as
+supporting enforcing of \t{REQUIRED_USE}, the package manager can attempt to 
resolve unmet USE state
+constraints through automatically adjusting the effective USE flags for the 
package being built,
+according to the algorithm specified below. Any adjustments done this way must 
not affect
+the package version permanently. The package manager must reevaluate the flags 
using the original
+user configuration every time the package is being built.
+
+The package flags that are either masked or forced according to the 
section~\ref{sec:use-mask-force}
+are considered immutable. The enforcing process must not alter the values of 
immutable flags.
+If the \t{REQUIRED_USE} constraint can not be satisfied without altering 
immutable flags, automatic
+enforcing fails.
+
+In order to enforce \t{REQUIRED_USE}, the package manager should process every 
USE constraint,
+in order of listing, according to the following rules:
+
+\begin{compactitem}
+\item For an unmatched use flag, the package manager should negate the state 
of the specified flag
+in order to make the constraint match.
+\item For an unmatched all-of group, the package manager should recursively 
enforce all
+constraints inside the group, in order of listing.
+\item For an unmatched use-conditonal group, the package manager should 
recursively enforce all
+constraints inside the group, in order of listing. The associated 
condition flag is not altered.
+\item For an unmatched any-of group, the package manager should recursively 
enforce the first item
+inside the group that can be enforced without altering immutable flags, in 
order of listing.
+\item For an unmatched at-most-one-of group:
+\begin{compactitem}
+\item If two or more items match due to immutable flags, the package 
manager must report
+failure.
+\item If exactly one of the items match due to immutable flags, the 
package manager should
+enforce all other items not to match, according to the rule specified 
below.
+\item If none of the items match due to immutable flags, the package 
manager should enforce all
+items not to match but the first item in order of listing that matches 
currently.
+\end{compactitem}
+\item For an unmatched exactly-one-of group:
+\begin{compactitem}
+\item If none of the items match, the package manager should behave as for 
unmatched any-of
+group.
+\item If more than one item matches, the package manager should behave as 
for unmatched
+at-most-one-of group.
+\end{compactitem}
+\end{compactitem}
+
+In order to enforce a matched use flag item not to match, the package manager 
should negate
+the state of the flag. The method of enforcing any other item type not to 
match is undefined.
+
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPIs supporting automatic enforcing of \t{REQUIRED_USE}}
+\label{tab:enforce-required-use-table}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Supports enforcing 

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

2017-10-09 Thread Ulrich Müller
commit: 585c5309205ee69233bd0934976b852f9256e31b
Author: James Le Cuirot  gentoo  org>
AuthorDate: Sun Sep 17 21:23:58 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Oct  9 17:15:26 2017 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=585c5309

EAPI 7 has SYSROOT and ESYSROOT

Bug: https://bugs.gentoo.org/317337

 eapi-differences.tex |  4 
 ebuild-env-vars.tex  | 47 +--
 2 files changed, 37 insertions(+), 14 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index f7f6b51..7871d5c 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{SYSROOT}, \t{ESYSROOT} & \compactfeatureref{sysroot} &
+No & No & No & No & Yes \\
+
 GNU patch version & \compactfeatureref{gnu-patch} &
 Any & Any & Any & Any & 2.7 \\
 
@@ -404,6 +407,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{ROOT}, \t{EROOT}, \t{D}, \t{ED} no longer end with a trailing slash,
 \featureref{trailing-slash}.
 \item \t{patch} is compatible with GNU patch 2.7, \featureref{gnu-patch}.
+\item \t{SYSROOT} and \t{ESYSROOT} added, \featureref{sysroot}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index fe61ac5..e24a065 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -130,6 +130,20 @@ variable.
 See also the \t{EPREFIX} variable. Only for EAPIs listed
 in table~\ref{tab:offset-env-vars-table} as supporting \t{EROOT}. The 
presence of a trailing
 slash EAPI-dependent as listed in table~\ref{tab:trailing-slash}. \\
+\t{SYSROOT} &
+\t{src_*} &
+No &
+\featurelabel{sysroot} The absolute path to the root directory containing 
build dependencies
+satisfied by \t{DEPEND}.  Only for EAPIs listed in 
table~\ref{tab:added-env-vars-table}
+as supporting \t{SYSROOT}. The presence of a trailing slash EAPI-dependent 
as listed
+in table~\ref{tab:trailing-slash}. \\
+\t{ESYSROOT} &
+\t{src_*} &
+No &
+Contains the concatenation of the paths in \t{SYSROOT} and \t{EPREFIX} 
variables,
+for convenience.  See also the \t{EPREFIX} variable. Only for EAPIs listed
+in table~\ref{tab:offset-env-vars-table} as supporting \t{ESYSROOT}. The 
presence of a trailing
+slash EAPI-dependent as listed in table~\ref{tab:trailing-slash}. \\
 \t{T} &
 All &
 Partially\footnote{Consistent and preserved across a single connected 
sequence of install or
@@ -239,17 +253,19 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various added env variables}
 \label{tab:added-env-vars-table}
-\begin{tabular}{l}
+\begin{tabular}{ll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{c}{\textbf{\t{MERGE_TYPE}?}} &
   \multicolumn{1}{P{6em}}{\textbf{\t{REPLACING_VERSIONS}?}} &
   \multicolumn{1}{P{6em}}{\textbf{\t{REPLACED_BY_VERSION}?}} &
-  \multicolumn{1}{P{6em}}{\textbf{\t{EBUILD_PHASE_FUNC}?}} \\
+  \multicolumn{1}{P{6em}}{\textbf{\t{EBUILD_PHASE_FUNC}?}} &
+  \multicolumn{1}{P{6em}}{\textbf{\t{SYSROOT}?}} \\
   \midrule
-  0, 1, 2, 3& No  & No  & No  & No  \\
-  4 & Yes & Yes & Yes & No  \\
-  5, 6, 7   & Yes & Yes & Yes & Yes \\
+  0, 1, 2, 3& No  & No  & No  & No  & No  \\
+  4 & Yes & Yes & Yes & No  & No  \\
+  5, 6  & Yes & Yes & Yes & Yes & No  \\
+  7 & Yes & Yes & Yes & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -272,15 +288,17 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting offset-prefix env variables}
 \label{tab:offset-env-vars-table}
-\begin{tabular}{}
+\begin{tabular}{l}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{c}{\textbf{\t{EPREFIX}?}} &
   \multicolumn{1}{c}{\textbf{\t{EROOT}?}} &
-  \multicolumn{1}{c}{\textbf{\t{ED}?}} \\
+  \multicolumn{1}{c}{\textbf{\t{ED}?}} &
+  \multicolumn{1}{c}{\textbf{\t{ESYSROOT}?}} \\
   \midrule
-  0, 1, 2   & No  & No  & No  \\
-  3, 4, 5, 6, 7 & Yes & Yes & Yes \\
+  0, 1, 2   & No  & No  & No  & No  \\
+  3, 4, 5, 6& Yes & Yes & Yes & No  \\
+  7 & Yes & Yes & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -442,16 +460,17 @@ If the path specifies the system root directory, it will 
be empty.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Variables that always or never end with a trailing slash}
 \label{tab:trailing-slash}
-\begin{tabular}{lll}
+\begin{tabular}{}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{2}{c}{\textbf{Ends with a trailing slash?}} \\
+  

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

2017-10-09 Thread Ulrich Müller
commit: 179b5fc79659f5886b0e4d38cc38d560cdc1cf09
Author: Michał Górny  gentoo  org>
AuthorDate: Sat Sep 23 23:46:32 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Oct  9 17:16:34 2017 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=179b5fc7

dependencies: Provide a nice summary table for dep APIs

 dependencies.tex | 18 +-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/dependencies.tex b/dependencies.tex
index 0d8933b..6a92542 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -26,6 +26,21 @@
 \end{tabular}
 \end{centertable}
 
+\begin{centertable}{Summary of other interfaces related to dependency classes}
+\label{tab:dependency-class-apis}
+\begin{tabular}{lccc}
+  \toprule
+  & \t{BDEPEND} & \t{DEPEND} & \t{RDEPEND}, \t{PDEPEND} \\
+  \midrule
+  binary compatible with & \t{CBUILD} & \t{CHOST} & \t{CHOST} \\
+  base unprefixed path & \t{/} & \t{\$\{SYSROOT\}} & \t{\$\{ROOT\}} \\
+  relevant offset-prefix & \t{\$\{BROOT\}} & \t{\$\{EPREFIX\}} & 
\t{\$\{EPREFIX\}} \\
+  path combined with prefix & \t{\$\{BROOT\}} & \t{\$\{ESYSROOT\}} & 
\t{\$\{EROOT\}} \\
+  PM query option & \t{-b} & \t{-d} & \t{-r} \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 There are three classes of dependencies supported by ebuilds:
 
 \begin{compactitem}
@@ -51,7 +66,8 @@ as supporting \t{BDEPEND}, the build dependencies are split 
into two subclasses:
 \end{compactitem}
 
 Table~\ref{tab:phase-function-dependency-classes} lists dependencies which 
must be satisfied before
-a particular phase function is executed.
+a particular phase function is executed. Table~\ref{tab:dependency-class-api} 
summarizes
+additional interfaces related to the dependency classes.
 
 In addition, \t{SRC_URI}, \t{HOMEPAGE}, \t{RESTRICT}, \t{PROPERTIES}, 
\t{LICENSE} and
 \t{REQUIRED_USE} use dependency-style specifications to specify their values.



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

2017-10-09 Thread Ulrich Müller
commit: 13538ac911d4047852643f1907b32ce09d461363
Author: Michał Górny  gentoo  org>
AuthorDate: Fri Sep 29 14:33:22 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Oct  9 17:20:10 2017 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=13538ac9

EAPI 7 allows die in subshell.

Bug: https://bugs.gentoo.org/465008

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 1a137a0..9579272 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{die} in subshell & \compactfeatureref{subshell-die} &
+No & No & No & No & Yes \\
+
 \t{nonfatal} function+command & \compactfeatureref{nonfatal-fallback} &
 No & No & No & No & Yes \\
 
@@ -459,6 +462,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{dolib} and \t{libopts} banned, \featureref{banned-commands}.
 \item \t{nonfatal} defined both as a shell function and external command,
   \featureref{nonfatal-fallback}.
+\item \t{die} guaranteed to work in a subshell environment, 
\featureref{subshell-die}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 02d987e..a7d3461 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -181,23 +181,30 @@ completing. Ebuilds must not run any of these commands 
once the current phase fu
 \item[die] \featurelabel{nonfatal-die} If called under the \t{nonfatal} 
command (as per
 section~\ref{sec:failure-behaviour}) and with \t{-n} as its first 
parameter, displays a failure
 message provided in its following argument and then returns a non-zero 
exit status. Only in
-EAPIs listed in table~\ref{tab:nonfatal-die} as supporting option~\t{-n}. 
Otherwise, displays
+EAPIs listed in table~\ref{tab:die-properties} as supporting 
option~\t{-n}. Otherwise, displays
 a failure message provided in its first and only argument, and then aborts 
the build process.
-\t{die} is \e{not} guaranteed to work correctly if called from a subshell 
environment.
+
+\featurelabel{subshell-die} In EAPIs listed in 
table~\ref{tab:die-properties} as not providing
+subshell support, \t{die} is \e{not} guaranteed to work correctly if 
called from a subshell
+environment.
 \item[assert] Checks the value of the shell's pipe status variable, and if any 
component is non-zero
 (indicating failure), calls \t{die}, passing any parameters to it.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{7}
-\begin{centertable}{EAPIs supporting \t{-n} for \t{die} and \t{assert} 
commands}
-\label{tab:nonfatal-die}
-\begin{tabular}{ll}
+\begin{centertable}{EAPI-specific properties of \t{die} and \t{assert} 
commands}
+\label{tab:die-properties}
+\begin{tabular}{lll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{1}{c}{\textbf{\t{die} and \t{assert} support \t{-n}?}} \\
+  \multicolumn{2}{c}{\textbf{\t{die} and \t{assert}}} \\
+  &
+  \multicolumn{1}{c}{\textbf{support \t{-n}?}} &
+  \multicolumn{1}{c}{\textbf{work in subshell?}} \\
   \midrule
-  0, 1, 2, 3, 4, 5  & No  \\
-  6, 7  & Yes \\
+  0, 1, 2, 3, 4, 5  & No  & No  \\
+  6 & Yes & No  \\
+  7 & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2017-10-09 Thread Ulrich Müller
commit: ef92bc885bcd57c6c129aeb65242d5f295d5f7bf
Author: Michał Górny  gentoo  org>
AuthorDate: Wed Sep 27 21:23:22 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Oct  9 17:10:01 2017 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=ef92bc88

EAPI 7 has version manipulation and comparison functions

Bug: https://bugs.gentoo.org/482170

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index c68fffa..9f3f8be 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{ver_*} functions & \compactfeatureref{ver-functions} &
+No & No & No & No & Yes \\
+
 \t{package.mask} directory & \compactfeatureref{package-mask-dir} &
 No & No & No & No & Yes \\
 
@@ -383,6 +386,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{package.mask}, \t{package.use}, \t{use.*} and \t{package.use.*} in a 
profile can be
 directories, \featureref{profile-file-dirs}.
 \item \t{dohtml} banned, \featureref{banned-commands}.
+\item Version manipulation and comparison functions added, 
\featureref{ver-functions}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 495a4ce..5b65477 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -817,6 +817,86 @@ These functions check whitespace-separated lists for a 
particular value.
 \item[hasq] Deprecated synonym for \t{has}.
 \end{description}
 
+\subsection{Version manipulation and comparison commands}
+\featurelabel{ver-functions}
+Those functions provide routines to work with version strings. Their 
availability per EAPI is listed
+in table~\ref{tab:version-functions}.
+
+For the purpose of version manipulation functions, the specification provides 
a method for splitting
+an arbitrary version string (not necessarily conforming to 
\ref{sec:version-spec}) into a series of
+version components and version separators.
+
+A version component consists either purely of digits (\t{[0-9]+}) or purely of 
a combination of
+uppercase and lowercase letters (\t{[a-zA-Z]+}). A version separator is either 
a string of any other
+characters (\t{[\textasciicircum 0-9a-zA-Z]}) or it occurs at the transition 
between a sequence
+of digits and a sequence of letters, or vice versa. In the latter case, the 
version separator is
+an empty string.
+
+The version string is processed left-to-right, with the successive version 
components being assigned
+successive indices starting with 1. The separator following a version 
component is assigned
+the index of the preceding version component. If the first version component 
is preceded by
+a non-null string of version separator characters, this separator is assigned 
the index 0.
+
+The version components are presumed present if not empty. The version 
separators between version
+components are always presumed present, even if they are empty. The version 
separators preceding
+the first version component and following the last are only presumed present 
if they are not empty.
+
+Whenever the functions support ranges, the range is specified as a 
non-negative integer, optionally
+followed by a hyphen (\t{-}), which in turn is optionally followed by another 
non-negative integer.
+
+A single integer specifies a single component or separator index. An integer 
followed by a hyphen
+specifies all components or separators starting with the one at specified 
index. Two integers
+separated by a hyphen specify a range of versions starting at the index 
specified by the first
+and ending at the second, inclusively.
+
+\begin{description}
+\item[ver_cut] Takes a range as the first argument, and optionally a version 
string as the second.
+Prints a substring of the version string starting at the version component 
specified as start
+of the range and ending at the version component specified as end of the 
range. If the version
+string is not specified, \t{\$\{PVR\}} is used.
+
+If the range spans outside the present version components, the missing 
components and separators
+are presumed empty. In particular, the range starting at zero includes 
zeroth version separator
+if present, and the range spanning past the last version component 
includes the suffix following
+it if present. A range that does not intersect with any present version 
components yields empty
+string.
+
+\item[ver_rs] Takes one or more pairs of arguments, optionally followed by a 
version string. Every
+argument pair specifies a range and a replacement string. Prints a version 
string after
+performing the specified separator substitutions. If the version string is 
not specified,
+\t{\$\{PVR\}} is used.
+
+For every argument pair specified, each of the version 

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

2017-10-09 Thread Ulrich Müller
commit: cc8a6a3b9cf0cddf08081c9fe169ccc4a0d60374
Author: Michał Górny  gentoo  org>
AuthorDate: Fri Sep 29 14:24:10 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Oct  9 17:20:10 2017 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=cc8a6a3b

EAPI 7 provides command fallback for nonfatal.

Bug: https://bugs.gentoo.org/622894

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 5bd7836..1a137a0 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{nonfatal} function+command & \compactfeatureref{nonfatal-fallback} &
+No & No & No & No & Yes \\
+
 \t{domo} install path & \compactfeatureref{domo-path} &
 \t{\$\{DESTTREE\}\slash share\slash locale} &
 \t{\$\{DESTTREE\}\slash share\slash locale} &
@@ -454,6 +457,8 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{ECLASSDIR} removed, \featureref{eclassdir}.
 \item \t{domo} installs to \t{/usr/share/locale}, ignoring \t{into}, 
\featureref{domo-path}.
 \item \t{dolib} and \t{libopts} banned, \featureref{banned-commands}.
+\item \t{nonfatal} defined both as a shell function and external command,
+  \featureref{nonfatal-fallback}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 35ec54e..02d987e 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -22,6 +22,11 @@ The following commands affect this behaviour:
 the build process due to a failure, instead a non-zero exit status shall 
be returned. Only in
 EAPIs listed in table~\ref{tab:commands-die-table} as supporting 
\t{nonfatal}.
 
+\featurelabel{nonfatal-fallback} In EAPIs listed in 
table~\ref{tab:commands-die-table}
+as having \t{nonfatal} defined as both function and external command, the 
package manager must
+provide both implementations to account both for calling in ebuild scope 
directly, and via
+\t{xargs}.
+
 Explicit \t{die} or \t{assert} commands only respect \t{nonfatal} when 
called with the \t{-n}
 option and in EAPIs supporting this option, see 
table~\ref{tab:nonfatal-die}.
 \end{description}
@@ -29,14 +34,16 @@ The following commands affect this behaviour:
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPI command failure behaviour}
 \label{tab:commands-die-table}
-\begin{tabular}{lll}
+\begin{tabular}{}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{1}{c}{\textbf{Command failure behaviour}} &
-  \multicolumn{1}{c}{\textbf{Supports \t{nonfatal}?}} \\
+  \multicolumn{1}{P{8em}}{\textbf{Command failure behaviour}} &
+  \multicolumn{1}{P{6em}}{\textbf{Supports \t{nonfatal}?}} &
+  \multicolumn{1}{P{12em}}{\textbf{\t{nonfatal} as both function and 
external command?}} \\
   \midrule
-  0, 1, 2, 3& Non-zero exit & No  \\
-  4, 5, 6, 7& Aborts& Yes \\
+  0, 1, 2, 3& Non-zero exit & No  & n/a \\
+  4, 5, 6   & Aborts& Yes & No  \\
+  7 & Aborts& Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2017-10-09 Thread Ulrich Müller
commit: 35900a461c1e0bb2cea225d9f7b3243b06c4245d
Author: Michał Górny  gentoo  org>
AuthorDate: Fri Sep 29 13:48:46 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Oct  9 17:20:10 2017 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=35900a46

pkg-mgr-commands: Redefine dolib* in terms of libdir.a

Since EAPI 7 removes dolib, it would be a bad fit to describe the two
other commands on top of one that is removed. Instead, start by defining
libdir.a and then define the two other commands on top of it.

This also clarifies that dolib.a & dolib.so do not respect libopts,
while the old wording was not clear on that. However, this is at least
how it was implemented in Portage (with dolib.a and dolib.so overriding
libopts completely).

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

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 1fa2053..907c883 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -494,15 +494,16 @@ can be extended or reduced (see below). The options that 
can be passed to \t{doh
 symlink is encountered. Failure behaviour is EAPI dependent as per
 section~\ref{sec:failure-behaviour}.
 
-\item[dolib] For each argument, installs it into the appropriate library 
subdirectory under
-\t{DESTTREE}, as determined by Algorithm~\ref{alg:ebuild-libdir}. Files 
are installed by default
-with file mode \t{0644}, or with the \t{install} options set by the most 
recent \t{libopts}
-call. Any symlinks are installed into the same directory as relative links 
to their original
-target. Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
+\item[dolib.a] For each argument, installs it into the appropriate library 
subdirectory under
+\t{DESTTREE}, as determined by Algorithm~\ref{alg:ebuild-libdir}. Files 
are installed
+with file mode \t{0644}. Any symlinks are installed into the same 
directory as relative links
+to their original target. Failure behaviour is EAPI dependent as per
+section~\ref{sec:failure-behaviour}.
 
-\item[dolib.a] As for \t{dolib} except each file is installed with mode 
\t{0644}.
+\item[dolib.so] As for \t{dolib.a} except each file is installed with mode 
\t{0755}.
 
-\item[dolib.so] As for \t{dolib} except each file is installed with mode 
\t{0755}.
+\item[dolib] As for \t{dolib.a} except that the default install mode can be 
overriden with
+the \t{install} options set by the most recent \t{libopts} call.
 
 \begin{algorithm}
 \caption{Determining the library directory} \label{alg:ebuild-libdir}



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

2017-10-09 Thread Ulrich Müller
commit: 9f9df93adeded14a0065ec6557cfba1db571e98f
Author: Michał Górny  gentoo  org>
AuthorDate: Wed Oct  4 16:42:13 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Oct  9 17:21:11 2017 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=9f9df93a

EAPI 7 has binding leftmost-of dep groups (||=).

Bug: https://bugs.gentoo.org/489458

 dependencies.tex | 45 ++---
 eapi-differences.tex |  4 
 2 files changed, 42 insertions(+), 7 deletions(-)

diff --git a/dependencies.tex b/dependencies.tex
index c4c23c1..c66106e 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -98,6 +98,12 @@ be surrounded on both sides by whitespace, except at the 
start and end of the st
 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}.
+\item \featurelabel{binding-leftmost-of} A binding leftmost-of group, which 
consists of the string
+\t{||=}, followed by whitespace, followed by an open parenthesis, followed 
by whitespace,
+followed by zero 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} in EAPIs
+listed in table~\ref{tab:dep-group-table} as supporting \t{||=}\ groups.
 \item An exactly-one-of group, which consists of the string 
\t{\textasciicircum\textasciicircum},
 followed by whitespace, 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
@@ -109,7 +115,7 @@ be surrounded on both sides by whitespace, except at the 
start and end of the st
 one or more of (a dependency item of any kind followed by whitespace), 
followed by a close
 parenthesis. More formally: \t{at-most-one-of} \t{::=} \t{'??'\ whitespace 
'(' whitespace
 (item whitespace)+ ')'}. Permitted in \t{REQUIRED_USE} in EAPIs listed in
-table~\ref{tab:at-most-one-of-table} as supporting \t{REQUIRED_USE ??}\ 
groups.
+table~\ref{tab:dep-group-table} as supporting \t{REQUIRED_USE ??}\ groups.
 \item A use-conditional group, which consists of an optional exclamation mark, 
followed by
 a use flag name, followed by a question mark, followed by whitespace, 
followed by
 an open parenthesis, followed by whitespace, followed by one or more of (a 
dependency item
@@ -150,15 +156,17 @@ In particular, note that whitespace is not optional.
 \end{centertable}
 
 \ChangeWhenAddingAnEAPI{7}
-\begin{centertable}{EAPIs supporting \t{REQUIRED_USE ??}\ groups}
-\label{tab:at-most-one-of-table}
-\begin{tabular}{ll}
+\begin{centertable}{EAPIs supporting additional group types}
+\label{tab:dep-group-table}
+\begin{tabular}{lll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{1}{c}{\textbf{Supports \t{REQUIRED_USE ??}\ groups?}} \\
+  \multicolumn{1}{c}{\textbf{Supports \t{REQUIRED_USE ??}\ groups?}} &
+  \multicolumn{1}{c}{\textbf{Supports \t{||=}\ groups?}} \\
   \midrule
-  0, 1, 2, 3, 4 & No  \\
-  5, 6, 7   & Yes \\
+  0, 1, 2, 3, 4 & No  & No  \\
+  5, 6  & Yes & No  \\
+  7 & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -186,6 +194,29 @@ considered to be matched if its associated package 
dependency specification is n
 
 An empty any-of group counts as being matched.
 
+\subsection{Binding leftmost-of dependency specifications}
+
+Any use-conditional group that is an immediate child of a binding leftmost-of 
group, if not enabled
+(disabled for an exclamation mark prefixed use flag name), is not considered a 
member of the binding
+leftmost-of group for match purposes.
+
+In a binding leftmost-of group, at least one immediate child element must be 
matched. A blocker is
+considered to be matched if its associated package dependency specification is 
not matched.
+In addition, for runtime dependencies, indicates that the package will break 
unless the dependency
+corresponding to the first immediate child (in order of listing) matched in 
\t{ESYSROOT} at the time
+the package was built is satisfied.
+
+An empty binding leftmost-of group counts as being matched.
+
+To implement the binding leftmost-of operator, the package manager will need 
to store which of
+the immediate child elements were matched. This syntax is only for package 
manager use and must not
+be used by ebuilds. Only the first matched child element needs to be indicated.
+
+Whenever the binding leftmost-of group is used in an enabled dependency group, 
the 

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

2017-10-09 Thread Ulrich Müller
commit: 7a4c0f0bc4768c0522f4751bc9d6fa914ed51d77
Author: Michał Górny  gentoo  org>
AuthorDate: Fri Sep 29 13:41:52 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Oct  9 17:20:10 2017 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=7a4c0f0b

domo installs to /usr in EAPI 7.

Bug: https://bugs.gentoo.org/595924

 eapi-differences.tex |  8 
 pkg-mgr-commands.tex | 25 -
 2 files changed, 28 insertions(+), 5 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 24da92c..3166208 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,13 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{domo} install path & \compactfeatureref{domo-path} &
+\t{\$\{DESTTREE\}\slash share\slash locale} &
+\t{\$\{DESTTREE\}\slash share\slash locale} &
+\t{\$\{DESTTREE\}\slash share\slash locale} &
+\t{\$\{DESTTREE\}\slash share\slash locale} &
+\t{/usr\slash share\slash locale} \\
+
 \t{PORTDIR} & \compactfeatureref{portdir} &
 Yes & Yes & Yes & Yes & No \\
 
@@ -439,6 +446,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{INSDESTTREE} removed, \featureref{insdesttree}.
 \item \t{PORTDIR} removed, \featureref{portdir}.
 \item \t{ECLASSDIR} removed, \featureref{eclassdir}.
+\item \t{domo} installs to \t{/usr/share/locale}, ignoring \t{into}, 
\featureref{domo-path}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index d86b88b..1fa2053 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -542,11 +542,12 @@ can be extended or reduced (see below). The options that 
can be passed to \t{doh
 the empty string. In EAPIs specified by table~\ref{tab:doman-table}, the 
\t{-i18n} option takes
 precedence over the language code in the filename.
 
-\item[domo] Installs the given \t{.mo} files with file mode \t{0644} into the 
appropriate
-subdirectory of \t{DESTTREE\slash share\slash locale}, generated by taking 
the basename of the
-file, removing the \t{.*} suffix, and appending \t{/LC_MESSAGES}\@. The 
name of the installed
-files is the package name with \t{.mo} appended. Failure behaviour is EAPI 
dependent as per
-section~\ref{sec:failure-behaviour}.
+\item[domo] \featurelabel{domo-path} Installs the given \t{.mo} files with 
file mode \t{0644} into
+the appropriate subdirectory of the locale tree, generated by taking the 
basename of the file,
+removing the \t{.*} suffix, and appending \t{/LC_MESSAGES}\@. The name of 
the installed files is
+the package name with \t{.mo} appended. Failure behaviour is EAPI 
dependent as per
+section~\ref{sec:failure-behaviour}. The locale tree location is EAPI 
dependent as per
+table~\ref{tab:domo-path}.
 
 \item[dosbin] As \t{dobin}, but installs to \t{DESTTREE/sbin}.
 
@@ -666,6 +667,20 @@ can be extended or reduced (see below). The options that 
can be passed to \t{doh
 \end{tabular}
 \end{centertable}
 
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPI-dependent install path for \t{domo} command}
+\label{tab:domo-path}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{destination path}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6 & \t{\$\{DESTTREE\}/share/locale} \\
+  7   & \t{/usr/share/locale} \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \subsection{Commands affecting install destinations}
 The following commands are used to set the various destination trees, all 
relative to \t{\$\{ED\}} in
 offset-prefix aware EAPIs and relative to \t{\$\{D\}} in offset-prefix 
agnostic EAPIs, used by the



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

2017-10-09 Thread Ulrich Müller
commit: 9fd2dcd9dd0f3f8c83d809771fcbaaf3d4ec2904
Author: Michał Górny  gentoo  org>
AuthorDate: Wed Oct  4 17:35:57 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Oct  9 17:21:11 2017 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=9fd2dcd9

EAPI 7 supports runtime-modifiable USE flags.

Bug: https://bugs.gentoo.org/424283

 dependencies.tex |  3 ++-
 eapi-differences.tex |  4 
 ebuild-env-vars.tex  |  5 -
 ebuild-vars.tex  | 16 
 eclasses.tex | 11 ++-
 metadata-cache.tex   |  1 +
 pkg-mgr-commands.tex |  4 
 7 files changed, 33 insertions(+), 11 deletions(-)

diff --git a/dependencies.tex b/dependencies.tex
index c66106e..b81b603 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -181,7 +181,8 @@ In a use-conditional group, if the associated use flag is 
enabled (or disabled i
 exclamation mark prefix), all of the child elements must be matched.
 
 It is an error for a flag to be used if it is not included in 
\t{IUSE_EFFECTIVE} as described in
-section~\ref{sec:use-iuse-handling}.
+section~\ref{sec:use-iuse-handling}. Flags listed in \t{IUSE_RUNTIME} can be 
used only
+in \t{RDEPEND}, \t{PDEPEND} and \t{REQUIRED_USE}.
 
 \subsection{Any-of dependency specifications}
 

diff --git a/eapi-differences.tex b/eapi-differences.tex
index ccd3b53..d08d461 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{IUSE_RUNTIME} & \compactfeatureref{iuse-runtime} &
+No & No & No & No & Yes \\
+
 \t{||=} dependency group & \compactfeatureref{binding-leftmost-of} &
 No & No & No & No & Yes \\
 
@@ -471,6 +474,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{die} guaranteed to work in a subshell environment, 
\featureref{subshell-die}.
 \item automatic enforcing of \t{REQUIRED_USE} is supported, 
\featureref{auto-req-use}.
 \item binding leftmost-of (\t{||=}) dependency group is supported, 
\featureref{binding-leftmost-of}.
+\item runtime-modifiable USE flags (\t{IUSE_RUNTIME}) are supported, 
\featureref{iuse-runtime}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index f495014..42bd3a2 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -355,10 +355,12 @@ table~\ref{tab:locale-settings}.
 \subsection{USE and IUSE handling}
 \label{sec:use-iuse-handling}
 
-This section discusses the handling of four variables:
+This section discusses the handling of five variables:
 
 \begin{description}
 \item[IUSE] is the variable calculated from the \t{IUSE} values defined in 
ebuilds and eclasses.
+\item[IUSE_RUNTIME] is the variable calculated from the \t{IUSE_RUNTIME} 
values defined in ebuilds
+and eclasses.
 \item[IUSE_REFERENCEABLE] is a variable calculated from \t{IUSE} and a variety 
of other sources
 described below. It is purely a conceptual variable; it is not exported to 
the ebuild
 environment. Values in \t{IUSE_REFERENCEABLE} may legally be used in 
queries from other
@@ -392,6 +394,7 @@ as supporting profile defined \t{IUSE} injection, 
\t{IUSE_EFFECTIVE} contains th
 
 \begin{compactitem}
 \item All values in the calculated \t{IUSE} value.
+\item All values in the calculated \t{IUSE_RUNTIME} value, in EAPIs where this 
variable is defined.
 \item All values in the profile \t{IUSE_IMPLICIT} variable.
 \item All values in the profile variable named \t{USE_EXPAND_VALUES_\$\{v\}}, 
where \t{\$\{v\}}
 is any value in the intersection of the profile \t{USE_EXPAND_UNPREFIXED} 
and

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index e4efcae..17e40ed 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -67,6 +67,12 @@ Ebuilds may define any of the following variables:
 \t{IUSE} defaults, any use flag name in \t{IUSE} may be prefixed by at 
most one of a plus or a
 minus sign. If such a prefix is present, the package manager may use it as 
a suggestion as to
 the default value of the use flag if no other configuration overrides it.
+\item[IUSE_RUNTIME] \featurelabel{iuse-runtime} Additional \t{USE} flags used 
by the ebuild whose
+values can be altered in place without rebuilding from source. The flags 
listed
+in \t{IUSE_RUNTIME} must not alter the package built. They must not be 
referenced at build time,
+except for informational purposes. A single flag can not be listed in both 
\t{IUSE_RUNTIME}
+and \t{IUSE} simultaneously. Uses the same syntax as \t{IUSE}. Only in 
EAPIs listed
+in table~\ref{tab:optional-vars-table} as supporting \t{IUSE_RUNTIME}.
 \item[REQUIRED_USE] \featurelabel{required-use} Zero or more assertions that 
must be met by the
 configuration of \t{USE} flags to be valid for this ebuild. See 
section~\ref{sec:required-use}
 for description and section~\ref{sec:dependencies} for full syntax. Only 
in EAPIs listed in
@@ -103,14 +109,16 @@ 

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

2017-10-09 Thread Ulrich Müller
commit: e608bb7a56048fcf8e44ff90c5b9ce5c8f70d8e1
Author: Michał Górny  gentoo  org>
AuthorDate: Fri Sep 29 03:08:43 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Oct  9 17:16:34 2017 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=e608bb7a

EAPI 7 bans package.provided

Bug: https://bugs.gentoo.org/568884

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 8028471..1bb0989 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{package.provided} & \compactfeatureref{package-provided} &
+Yes & Yes & Yes & Yes & No \\
+
 \t{BROOT} & \compactfeatureref{broot} &
 No & No & No & No & Yes \\
 
@@ -419,6 +422,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{BROOT}, \featureref{broot}.
 \item \t{best_version} and \t{has_version} drops the \t{-{}-host-root} option 
in favor of the
   \t{-b}, \t{-d}, and \t{-r} options, \featureref{pm-query-options}.
+\item \t{package.provided} in profiles banned, \featureref{package-provided}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/profiles.tex b/profiles.tex
index 99e84ea..edc17af 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -115,10 +115,26 @@ necessarily a global mask (from 
\t{profiles/package.mask}, section~\ref{profiles
 inherit tree when it comes to \t{-lines}. This behaviour may not be relied 
upon.
 
 \subsection{package.provided}
-\t{package.provided} is used to tell the package manager that a certain 
package version should be
-considered to be provided by the system regardless of whether it is actually 
installed. Because it
-has severe adverse effects on USE-based and slot-based dependencies, its use 
is strongly deprecated
-and package manager support must be regarded as purely optional.
+\featurelabel{package-provided} \t{package.provided} is used to tell the 
package manager that
+a certain package version should be considered to be provided by the system 
regardless of whether it
+is actually installed. Because it has severe adverse effects on USE-based and 
slot-based
+dependencies, its use is strongly deprecated and package manager support must 
be regarded as purely
+optional. Banned in EAPIs listed as not allowing \t{package.provided} in
+table~\ref{tab:profile-package-provided}.
+
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{Profile \t{package.provided} support}
+\label{tab:profile-package-provided}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Allows \t{package.provided}?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6 & Yes \\
+  7   & No  \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
 
 \subsection{package.use}
 The \t{package.use} file may be used by the package manager to override the 
default USE flags



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

2017-10-09 Thread Ulrich Müller
commit: 73a013f3d662696de01c8f8c87b5add99fac8a32
Author: Michał Górny  gentoo  org>
AuthorDate: Fri Sep 29 14:02:49 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Oct  9 17:20:10 2017 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=73a013f3

EAPI 7 bans dolib and libopts.

Bug: https://bugs.gentoo.org/630416

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 3166208..5bd7836 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -224,6 +224,12 @@ Most utilities die & \compactfeatureref{die-on-failure} &
 \t{dohtml} & \compactfeatureref{banned-commands} &
 Yes & Yes & Yes & Yes & Banned \\
 
+\t{dolib} & \compactfeatureref{banned-commands} &
+Yes & Yes & Yes & Yes & Banned \\
+
+\t{libopts} & \compactfeatureref{banned-commands} &
+Yes & Yes & Yes & Yes & Banned \\
+
 PM query options & \compactfeatureref{pm-query-options} &
 No & No & \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} \\
 
@@ -447,6 +453,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{PORTDIR} removed, \featureref{portdir}.
 \item \t{ECLASSDIR} removed, \featureref{eclassdir}.
 \item \t{domo} installs to \t{/usr/share/locale}, ignoring \t{into}, 
\featureref{domo-path}.
+\item \t{dolib} and \t{libopts} banned, \featureref{banned-commands}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 907c883..35ec54e 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -50,20 +50,22 @@ called, the package manager must abort the build process 
indicating an error.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Banned commands}
 \label{tab:banned-commands-table}
-\begin{tabular}{l}
+\begin{tabular}{lll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{4}{c}{\textbf{Command banned?}} \\
+  \multicolumn{6}{c}{\textbf{Command banned?}} \\
   \multicolumn{1}{c}{} &
   \multicolumn{1}{c}{\textbf{\t{dohard}}} &
   \multicolumn{1}{c}{\textbf{\t{dosed}}} &
   \multicolumn{1}{c}{\textbf{\t{einstall}}} &
-  \multicolumn{1}{c}{\textbf{\t{dohtml}}} \\
+  \multicolumn{1}{c}{\textbf{\t{dohtml}}} &
+  \multicolumn{1}{c}{\textbf{\t{dolib}}} &
+  \multicolumn{1}{c}{\textbf{\t{libopts}}} \\
   \midrule
-  0, 1, 2, 3& No  & No  & No  & No  \\
-  4, 5  & Yes & Yes & No  & No  \\
-  6 & Yes & Yes & Yes & No  \\
-  7 & Yes & Yes & Yes & Yes \\
+  0, 1, 2, 3& No  & No  & No  & No  & No  & No  \\
+  4, 5  & Yes & Yes & No  & No  & No  & No  \\
+  6 & Yes & Yes & Yes & No  & No  & No  \\
+  7 & Yes & Yes & Yes & Yes & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -503,7 +505,9 @@ can be extended or reduced (see below). The options that 
can be passed to \t{doh
 \item[dolib.so] As for \t{dolib.a} except each file is installed with mode 
\t{0755}.
 
 \item[dolib] As for \t{dolib.a} except that the default install mode can be 
overriden with
-the \t{install} options set by the most recent \t{libopts} call.
+the \t{install} options set by the most recent \t{libopts} call. In EAPIs 
listed
+in table~\ref{tab:banned-commands-table}, this command is banned as per
+section~\ref{sec:banned-commands}.
 
 \begin{algorithm}
 \caption{Determining the library directory} \label{alg:ebuild-libdir}
@@ -714,6 +718,8 @@ has returned.
 \item[exeopts] Sets the options passed by \t{doexe} et al.\ to the \t{install} 
command.
 
 \item[libopts] Sets the options passed by \t{dolib} et al.\ to the \t{install} 
command.
+In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as
+per section~\ref{sec:banned-commands}.
 
 \end{description}
 



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

2017-10-09 Thread Ulrich Müller
commit: 48e3b8835ff3932aad95871276eb3fbe24d45847
Author: Michał Górny  gentoo  org>
AuthorDate: Thu Sep 28 14:05:38 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Oct  9 17:12:08 2017 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=48e3b883

EAPI 7 has eqawarn

Bug: https://bugs.gentoo.org/482884

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 9f3f8be..8a1e55a 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{eqawarn} & \compactfeatureref{eqawarn} &
+No & No & No & No & Yes \\
+
 \t{ver_*} functions & \compactfeatureref{ver-functions} &
 No & No & No & No & Yes \\
 
@@ -387,6 +390,7 @@ EAPI 7 is EAPI 6 with the following changes:
 directories, \featureref{profile-file-dirs}.
 \item \t{dohtml} banned, \featureref{banned-commands}.
 \item Version manipulation and comparison functions added, 
\featureref{ver-functions}.
+\item \t{eqawarn} added, \featureref{eqawarn}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 5b65477..91f38c0 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -124,6 +124,10 @@ stderr or some other appropriate facility.
 example.
 \item[ewarn] Displays a warning message. Must not go to stdout.
 \item[eerror] Displays an error message. Must not go to stdout.
+\item[eqawarn] \featurelabel{eqawarn} Display a QA warning message intended 
for ebuild developers.
+The package manager may provide appropriate mechanisms to skip those 
messages for normal users.
+Must not go to stdout. Only available in EAPIs listed in 
table~\ref{tab:output-commands} as
+supporting \t{eqawarn}.
 \item[ebegin] Displays an informational message. Should be used when beginning 
a possibly
 lengthy process, and followed by a call to \t{eend}.
 \item[eend] Indicates that the process begun with an \t{ebegin} message has 
completed. Takes one
@@ -132,6 +136,20 @@ stderr or some other appropriate facility.
 message followed by a failure indicator. Returns its first argument as 
exit status.
 \end{description}
 
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{Output commands for EAPIs}
+\label{tab:output-commands}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{\t{eqawarn}?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6  & No  \\
+  7& Yes \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \subsection{Error commands}
 These commands are used when an error is detected that will prevent the build 
process from
 completing. Ebuilds must not run any of these commands once the current phase 
function has returned.



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

2017-10-09 Thread Ulrich Müller
commit: 92a5b7554ec1eee656e61aff7ed85486ff177a17
Author: James Le Cuirot  gentoo  org>
AuthorDate: Sat Sep 23 20:53:59 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Oct  9 17:16:34 2017 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=92a5b755

EAPI 7 drops --host-root in favor of -b, -d, and -r

Bug: https://bugs.gentoo.org/317337

 eapi-differences.tex |  8 +---
 pkg-mgr-commands.tex | 30 --
 2 files changed, 25 insertions(+), 13 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index d6eab8d..8028471 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -202,8 +202,8 @@ Most utilities die & \compactfeatureref{die-on-failure} &
 \t{dohtml} & \compactfeatureref{banned-commands} &
 Yes & Yes & Yes & Yes & Banned \\
 
-Option \t{-{}-host-root} & \compactfeatureref{host-root-option} &
-No & No & Yes & Yes & Yes \\
+PM query options & \compactfeatureref{pm-query-options} &
+No & No & \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} \\
 
 \t{die -n} & \compactfeatureref{nonfatal-die} &
 No & No & No & Yes & Yes \\
@@ -368,7 +368,7 @@ EAPI 5 is EAPI 4 with the following changes:
 \item \t{USE} is calculated differently, \featureref{profile-iuse-inject}.
 \item \t{find} is guaranteed to be GNU, \featureref{gnu-find}.
 \item \t{best_version} and \t{has_version} support the \t{-{}-host-root} 
option,
-\featureref{host-root-option}.
+\featureref{pm-query-options}.
 \item \t{econf} adds \t{-{}-disable-silent-rules}, \featureref{econf-options}.
 \item \t{doheader} and \t{newheader} support, \featureref{doheader}.
 \item \t{new*} can read from standard input, \featureref{newfoo-stdin}.
@@ -417,6 +417,8 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{econf} adds \t{-{}-with-sysroot}, \featureref{econf-options}.
 \item \t{BDEPEND}, \featureref{bdepend}.
 \item \t{BROOT}, \featureref{broot}.
+\item \t{best_version} and \t{has_version} drops the \t{-{}-host-root} option 
in favor of the
+  \t{-b}, \t{-d}, and \t{-r} options, \featureref{pm-query-options}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 96b9df4..d86b88b 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -84,27 +84,37 @@ These commands are used to extract information about the 
system. Ebuilds must no
 these commands in parallel with any other package manager command. Ebuilds 
must not run any of
 these commands once the current phase function has returned.
 
-\featurelabel{host-root-option} In EAPIs listed in 
table~\ref{tab:foo-version-host-root-table} as
-supporting option \t{-{}-host-root}, this flag as the first argument will 
cause the query to apply
-to the host root instead of \t{ROOT}.
+\featurelabel{pm-query-options} In EAPIs listed in 
table~\ref{tab:pm-query-options-table}
+as supporting options \t{-b}, \t{-d}, and \t{-r}, these flags as the first 
argument will cause
+the query to apply to locations targetted by \t{BDEPEND}, \t{DEPEND}, and 
\t{RDEPEND} respectively.
+When none of these options are given, \t{-r} is assumed.
+
+In EAPIs listed in table~\ref{tab:pm-query-options-table} as supporting option 
\t{-{}-host-root},
+this flag as the first argument will cause the query to apply to the host 
root. Otherwise, it
+applies to \t{ROOT}.
+
 \begin{description}
 \item[has_version] Takes exactly one package dependency specification as an 
argument. Returns
-true if a package matching the specification is installed in \t{ROOT}, and 
false otherwise.
+true if a package matching the specification is installed, and false 
otherwise.
 \item[best_version] Takes exactly one package dependency specification as an 
argument. If a
 matching package is installed, prints the category, package name and 
version of the highest
 matching version; otherwise, prints an empty string. The exit code is 
unspecified.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{7}
-\begin{centertable}{EAPIs supporting \t{-{}-host-root} for \t{*_version} 
commands}
-\label{tab:foo-version-host-root-table}
-\begin{tabular}{ll}
+\begin{centertable}{Package manager query command options supported by EAPIs}
+\label{tab:pm-query-options-table}
+\begin{tabular}{l}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{1}{c}{\textbf{\t{*_version} supports \t{-{}-host-root}?}} \\
+  \multicolumn{1}{c}{\textbf{\t{-{}-host-root}?}} &
+  \multicolumn{1}{c}{\textbf{\t{-b}?}} &
+  \multicolumn{1}{c}{\textbf{\t{-d}?}} &
+  \multicolumn{1}{c}{\textbf{\t{-r}?}} \\
   \midrule
-  0, 1, 2, 3, 4 & No  \\
-  5, 6  & Yes \\
+  0, 1, 2, 3, 4 & No  & No  & No  & No  \\
+  5, 6  & Yes & No  & No  & No  \\
+  7 & No  & Yes & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2017-10-09 Thread Ulrich Müller
commit: aba5a1ae1687bb6b6ec277581242d30c56038949
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun Nov 29 23:00:32 2015 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Oct  9 17:06:22 2017 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=aba5a1ae

EAPI 7 supports a directory for package.mask.

Bug: https://bugs.gentoo.org/282296

 eapi-differences.tex |  4 
 tree-layout.tex  | 20 
 2 files changed, 24 insertions(+)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 4c3ee67..0b41d71 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{package.mask} directory & \compactfeatureref{package-mask-dir} &
+No & No & No & No & Yes \\
+
 Stable use masking/forcing & \compactfeatureref{stablemask} &
 No & No & Yes & Yes & Yes \\
 
@@ -373,6 +376,7 @@ EAPI 6 is EAPI 5 with the following changes:
 EAPI 7 is EAPI 6 with the following changes:
 
 \begin{compactitem}
+\item \t{profiles/package.mask} can be a directory, 
\featureref{package-mask-dir}.
 \item \t{dohtml} banned, \featureref{banned-commands}.
 \end{compactitem}
 

diff --git a/tree-layout.tex b/tree-layout.tex
index 1c23357..d09feef 100644
--- a/tree-layout.tex
+++ b/tree-layout.tex
@@ -107,6 +107,12 @@ manager must ignore any files in this directory that it 
does not recognise.
 Contains a list, one entry per line, of package dependency specifications 
(using the directory's
 EAPI). Any package version matching one of these is considered to be 
masked, and will not be
 installed regardless of profile unless it is unmasked by the user 
configuration.
+
+\featurelabel{package-mask-dir} For EAPIs listed in 
table~\ref{tab:package-mask-dir} as
+supporting it, \t{package.mask} can be a directory instead of a regular 
file. Files contained
+in that directory, unless their name begins with a dot, will be 
concatenated in order of their
+filename in the POSIX locale and the result will be processed as if it 
were a single file.
+Any subdirectories will be ignored.
 \item[profiles.desc] Described below in section~\ref{sec:profiles.desc}.
 \item[repo_name] Contains, on a single line, the name of this repository. The 
repository name must
 conform to section~\ref{sec:repository-names}.
@@ -123,6 +129,20 @@ manager must ignore any files in this directory that it 
does not recognise.
 \item[updates/] This directory is described in section~\ref{sec:updates-dir}.
 \end{description}
 
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPIs supporting a directory for \t{package.mask}}
+\label{tab:package-mask-dir}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{\t{package.mask} can be a directory?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6 & No  \\
+  7   & Yes \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \subsection{The profiles.desc file}
 \label{sec:profiles.desc}
 \t{profiles.desc} is a line-based file, with the standard commenting



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

2017-10-09 Thread Ulrich Müller
commit: f08bdb13c8d65e0f5fe44dc97ae0a6b744aa20ba
Author: Michał Górny  gentoo  org>
AuthorDate: Fri Sep 29 03:17:43 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Oct  9 17:16:34 2017 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=f08bdb13

EAPI 7 removes PORTDIR and ECLASSDIR.

Bug: https://bugs.gentoo.org/373349
Bug: https://bugs.gentoo.org/373351

 eapi-differences.tex |  8 
 ebuild-env-vars.tex  | 18 +++---
 2 files changed, 19 insertions(+), 7 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 968dba1..24da92c 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,12 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{PORTDIR} & \compactfeatureref{portdir} &
+Yes & Yes & Yes & Yes & No \\
+
+\t{ECLASSDIR} & \compactfeatureref{eclassdir} &
+Yes & Yes & Yes & Yes & No \\
+
 \t{DESTTREE} & \compactfeatureref{desttree} &
 Yes & Yes & Yes & Yes & No \\
 
@@ -431,6 +437,8 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{package.provided} in profiles banned, \featureref{package-provided}.
 \item \t{DESTTREE} removed, \featureref{desttree}.
 \item \t{INSDESTTREE} removed, \featureref{insdesttree}.
+\item \t{PORTDIR} removed, \featureref{portdir}.
+\item \t{ECLASSDIR} removed, \featureref{eclassdir}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 0434083..f495014 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -110,11 +110,13 @@ variable.
 \t{PORTDIR} &
 \t{src_*} &
 No &
-The full path to the master repository's base directory. \\
+\featurelabel{portdir} The full path to the master repository's base 
directory.  Only for EAPIs
+listed in table~\ref{tab:removed-env-vars-table} as supporting 
\t{PORTDIR}. \\
 \t{ECLASSDIR} &
 \t{src_*} &
 No &
-The full path to the master repository's eclass directory. \\
+\featurelabel{eclassdir} The full path to the master repository's eclass 
directory.  Only for
+EAPIs listed in table~\ref{tab:removed-env-vars-table} as supporting 
\t{ECLASSDIR}.\\
 \t{ROOT} &
\t{pkg_*} &
No &
@@ -284,17 +286,19 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various removed env variables}
 \label{tab:removed-env-vars-table}
-\begin{tabular}{l}
+\begin{tabular}{lll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{c}{\textbf{\t{AA}?}} &
   \multicolumn{1}{c}{\textbf{\t{KV}?}} &
   \multicolumn{1}{c}{\textbf{\t{DESTTREE}?}} &
-  \multicolumn{1}{c}{\textbf{\t{INSDESTTREE}?}} \\
+  \multicolumn{1}{c}{\textbf{\t{INSDESTTREE}?}} &
+  \multicolumn{1}{c}{\textbf{\t{PORTDIR}?}} &
+  \multicolumn{1}{c}{\textbf{\t{ECLASSDIR}?}} \\
   \midrule
-  0, 1, 2, 3& Yes & Yes & Yes & Yes \\
-  4, 5, 6   & No  & No  & Yes & Yes \\
-  7 & No  & No  & No  & No  \\
+  0, 1, 2, 3& Yes & Yes & Yes & Yes & Yes & Yes \\
+  4, 5, 6   & No  & No  & Yes & Yes & Yes & Yes \\
+  7 & No  & No  & No  & No  & No  & No  \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2017-10-09 Thread Ulrich Müller
commit: 617268dc04e273b738008cba32d1c44d2338cad0
Author: Michał Górny  gentoo  org>
AuthorDate: Thu Sep 28 17:50:56 2017 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Oct  9 17:15:26 2017 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=617268dc

EAPI 7 requires GNU patch 2.7.

Bug: https://bugs.gentoo.org/593786

 commands.tex | 13 -
 eapi-differences.tex |  4 
 2 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/commands.tex b/commands.tex
index 86b4232..5ba9626 100644
--- a/commands.tex
+++ b/commands.tex
@@ -26,7 +26,8 @@ The following commands must always be available in the ebuild 
environment:
 page~\pageref{tab:bash-version}.
 \item \t{sed} must be available, and must support all forms of invocations 
valid for GNU sed
 version 4 or later.
-\item \t{patch} must be available, and must support all inputs valid for GNU 
patch.
+\item \featurelabel{gnu-patch} \t{patch} must be available, and must support 
all inputs valid
+for GNU patch, version as listed in table~\ref{tab:system-commands-table}.
 \item \featurelabel{gnu-find} \t{find} and \t{xargs} must be available, and 
must support all forms
 of invocations valid for GNU findutils version 4.4 or later. Only for 
EAPIs listed in
 table~\ref{tab:system-commands-table} as requiring GNU find.
@@ -35,13 +36,15 @@ The following commands must always be available in the 
ebuild environment:
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{System commands for EAPIs}
 \label{tab:system-commands-table}
-\begin{tabular}{ll}
+\begin{tabular}{lll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{1}{c}{\textbf{GNU \t{find}?}} \\
+  \multicolumn{1}{c}{\textbf{GNU \t{find}?}} &
+  \multicolumn{1}{c}{\textbf{GNU \t{patch} version}} \\
   \midrule
-  0, 1, 2, 3, 4 & Undefined \\
-  5, 6, 7   & Yes   \\
+  0, 1, 2, 3, 4 & Undefined & Any \\
+  5, 6  & Yes   & Any \\
+  7 & Yes   & 2.7 \\
   \bottomrule
 \end{tabular}
 \end{centertable}

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 49e6be9..f7f6b51 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+GNU patch version & \compactfeatureref{gnu-patch} &
+Any & Any & Any & Any & 2.7 \\
+
 Trailing slash in \t{ROOT}, \t{D}... & \compactfeatureref{trailing-slash} &
 Yes & Yes & Yes & Yes & No \\
 
@@ -400,6 +403,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item Output commands can no longer use stdout, \featureref{output-no-stdout}.
 \item \t{ROOT}, \t{EROOT}, \t{D}, \t{ED} no longer end with a trailing slash,
 \featureref{trailing-slash}.
+\item \t{patch} is compatible with GNU patch 2.7, \featureref{gnu-patch}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}



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

2017-10-09 Thread Ulrich Müller
commit: ab1881ea0543dde98f3c6a63398463a505308551
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun Nov 29 23:01:54 2015 +
Commit: Ulrich Müller  gentoo  org>
CommitDate: Mon Oct  9 17:06:22 2017 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=ab1881ea

EAPI 7 supports directories for profile files.

Bug: https://bugs.gentoo.org/282296

 eapi-differences.tex |  5 +
 profiles.tex | 38 +++---
 2 files changed, 36 insertions(+), 7 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 0b41d71..c68fffa 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 & No & Yes \\
 
+Profile files as directories & \compactfeatureref{profile-file-dirs} &
+No & No & No & No & Yes \\
+
 Stable use masking/forcing & \compactfeatureref{stablemask} &
 No & No & Yes & Yes & Yes \\
 
@@ -377,6 +380,8 @@ EAPI 7 is EAPI 6 with the following changes:
 
 \begin{compactitem}
 \item \t{profiles/package.mask} can be a directory, 
\featureref{package-mask-dir}.
+\item \t{package.mask}, \t{package.use}, \t{use.*} and \t{package.use.*} in a 
profile can be
+directories, \featureref{profile-file-dirs}.
 \item \t{dohtml} banned, \featureref{banned-commands}.
 \end{compactitem}
 

diff --git a/profiles.tex b/profiles.tex
index 0d7164e..99e84ea 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -69,6 +69,27 @@ parent profile's list is taken, and the current profile's 
list appended. If any
 hyphen, then any lines previous to it whose contents are equal to the 
remainder of that line are
 removed from the list. Once again, blank lines and those beginning with a \# 
are discarded.
 
+\featurelabel{profile-file-dirs} In EAPIs listed in 
table~\ref{tab:profile-file-dirs} as supporting
+directories for profile files, any of the files \t{package.mask}, 
\t{package.use}, \t{use.*} and
+\t{package.use.*} mentioned below can be a directory instead of a regular 
file. Files contained
+in that directory, unless their name begins with a dot, will be concatenated 
in order of their
+filename in the POSIX locale and the result will be processed as if it were a 
single file.
+Any subdirectories will be ignored.
+
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPIs supporting directories for profile files}
+\label{tab:profile-file-dirs}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{Supports directories for profile files?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6 & No  \\
+  7   & Yes \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \subsection{packages}
 The \t{packages} file is used to define the `system set' for this profile.
 After the above rules for inheritance and comments are applied, its lines must 
take one of two
@@ -84,7 +105,8 @@ but is mentioned here for completeness.
 \subsection{package.mask}
 \t{package.mask} is used to prevent packages from being installed on a given 
profile. Each line
 contains one package dependency specification; anything matching this 
specification will not be
-installed unless unmasked by the user's configuration.
+installed unless unmasked by the user's configuration. In some EAPIs, 
\t{package.mask} can be a
+directory instead of a regular file as per section~\ref{sec:line-stacking}.
 
 Note that the \t{-spec} syntax can be used to remove a mask in a parent 
profile, but not
 necessarily a global mask (from \t{profiles/package.mask}, 
section~\ref{profiles-package.mask}).
@@ -99,17 +121,19 @@ has severe adverse effects on USE-based and slot-based 
dependencies, its use is
 and package manager support must be regarded as purely optional.
 
 \subsection{package.use}
-The \t{package.use} file may be used by the package manager to override the 
default USE flags specified
-by \t{make.defaults} on a per package basis.  The format is to have a package 
dependency specification,
-and then a space delimited list of USE flags to enable.  A USE flag in the 
form of \t{-flag} indicates
-that the package should have the USE flag disabled.  The package dependency 
specification is limited to
-the forms defined by the directory's EAPI.
+The \t{package.use} file may be used by the package manager to override the 
default USE flags
+specified by \t{make.defaults} on a per package basis. The format is to have a 
package dependency
+specification, and then a space delimited list of USE flags to enable. A USE 
flag in the form of
+\t{-flag} indicates that the package should have the USE flag disabled. The 
package dependency
+specification is limited to the forms defined by the directory's EAPI. In some 
EAPIs,
+\t{package.use} can be a directory instead of a regular file as per 
section~\ref{sec:line-stacking}.
 
 \subsection{USE masking and 

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

2017-10-04 Thread Michał Górny
commit: f6417996b3f032b0cf7587921f7946bdd1444ff6
Author: James Le Cuirot  gentoo  org>
AuthorDate: Sun Sep 17 21:39:27 2017 +
Commit: Michał Górny  gentoo  org>
CommitDate: Wed Oct  4 20:22:57 2017 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=f6417996

EAPI 7 has BROOT

Bug: https://bugs.gentoo.org/317337

 eapi-differences.tex |  4 
 ebuild-env-vars.tex  | 33 +
 2 files changed, 25 insertions(+), 12 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 9205125..af28b7a 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{BROOT} & \compactfeatureref{broot} &
+No & No & No & No & Yes \\
+
 \t{BDEPEND} & \compactfeatureref{bdepend} &
 No & No & No & No & Yes \\
 
@@ -413,6 +416,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{SYSROOT} and \t{ESYSROOT} added, \featureref{sysroot}.
 \item \t{econf} adds \t{-{}-with-sysroot}, \featureref{econf-options}.
 \item \t{BDEPEND}, \featureref{bdepend}.
+\item \t{BROOT}, \featureref{broot}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index e24a065..e91f36e 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -144,6 +144,13 @@ variable.
 for convenience.  See also the \t{EPREFIX} variable. Only for EAPIs listed
 in table~\ref{tab:offset-env-vars-table} as supporting \t{ESYSROOT}. The 
presence of a trailing
 slash EAPI-dependent as listed in table~\ref{tab:trailing-slash}. \\
+\t{BROOT} &
+\t{src_*} &
+No &
+\featurelabel{broot} The absolute path to the root directory containing 
build dependencies
+satisfied by 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}.
+The presence of a trailing slash EAPI-dependent as listed in 
table~\ref{tab:trailing-slash}. \\
 \t{T} &
 All &
 Partially\footnote{Consistent and preserved across a single connected 
sequence of install or
@@ -253,19 +260,20 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various added env variables}
 \label{tab:added-env-vars-table}
-\begin{tabular}{ll}
+\begin{tabular}{lll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{c}{\textbf{\t{MERGE_TYPE}?}} &
   \multicolumn{1}{P{6em}}{\textbf{\t{REPLACING_VERSIONS}?}} &
   \multicolumn{1}{P{6em}}{\textbf{\t{REPLACED_BY_VERSION}?}} &
   \multicolumn{1}{P{6em}}{\textbf{\t{EBUILD_PHASE_FUNC}?}} &
-  \multicolumn{1}{P{6em}}{\textbf{\t{SYSROOT}?}} \\
+  \multicolumn{1}{P{6em}}{\textbf{\t{SYSROOT}?}} &
+  \multicolumn{1}{P{6em}}{\textbf{\t{BROOT}?}} \\
   \midrule
-  0, 1, 2, 3& No  & No  & No  & No  & No  \\
-  4 & Yes & Yes & Yes & No  & No  \\
-  5, 6  & Yes & Yes & Yes & Yes & No  \\
-  7 & Yes & Yes & Yes & Yes & Yes \\
+  0, 1, 2, 3& No  & No  & No  & No  & No  & No  \\
+  4 & Yes & Yes & Yes & No  & No  & No  \\
+  5, 6  & Yes & Yes & Yes & Yes & No  & No  \\
+  7 & Yes & Yes & Yes & Yes & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -288,7 +296,7 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting offset-prefix env variables}
 \label{tab:offset-env-vars-table}
-\begin{tabular}{l}
+\begin{tabular}{ll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{c}{\textbf{\t{EPREFIX}?}} &
@@ -460,17 +468,18 @@ If the path specifies the system root directory, it will 
be empty.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Variables that always or never end with a trailing slash}
 \label{tab:trailing-slash}
-\begin{tabular}{}
+\begin{tabular}{l}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{3}{c}{\textbf{Ends with a trailing slash?}} \\
+  \multicolumn{4}{c}{\textbf{Ends with a trailing slash?}} \\
   &
   \t{ROOT}, \t{EROOT} &
   \t{D}, \t{ED} &
-  \t{SYSROOT}, \t{ESYSROOT} \\
+  \t{SYSROOT}, \t{ESYSROOT} &
+  \t{BROOT} \\
   \midrule
-  0, 1, 2, 3, 4, 5, 6 & always & always & n/a\\
-  7   & never  & never  & never  \\
+  0, 1, 2, 3, 4, 5, 6 & always & always & n/a& n/a\\
+  7   & never  & never  & never  & never  \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2017-10-04 Thread Michał Górny
commit: 7f8bb327a19ae6b510cee1df7613f2570ade01e0
Author: Michał Górny  gentoo  org>
AuthorDate: Wed Oct  4 16:42:13 2017 +
Commit: Michał Górny  gentoo  org>
CommitDate: Wed Oct  4 20:25:38 2017 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=7f8bb327

EAPI 7 has binding leftmost-of dep groups (||=).

Bug: https://bugs.gentoo.org/489458

 dependencies.tex | 45 ++---
 eapi-differences.tex |  4 
 2 files changed, 42 insertions(+), 7 deletions(-)

diff --git a/dependencies.tex b/dependencies.tex
index 5773aef..d9592d9 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -98,6 +98,12 @@ be surrounded on both sides by whitespace, except at the 
start and end of the st
 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}.
+\item \featurelabel{binding-leftmost-of} A binding leftmost-of group, which 
consists of the string
+\t{||=}, followed by whitespace, followed by an open parenthesis, followed 
by whitespace,
+followed by zero 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} in EAPIs
+listed in table~\ref{tab:dep-group-table} as supporting \t{||=}\ groups.
 \item An exactly-one-of group, which consists of the string 
\t{\textasciicircum\textasciicircum},
 followed by whitespace, followed by an open parenthesis, followed by 
whitespace, followed by
 zero or more of (a dependency item of any kind followed by whitespace), 
followed by a close
@@ -109,7 +115,7 @@ be surrounded on both sides by whitespace, except at the 
start and end of the st
 zero or more of (a dependency item of any kind followed by whitespace), 
followed by a close
 parenthesis. More formally: \t{at-most-one-of} \t{::=} \t{'??'\ whitespace 
'(' whitespace
 (item whitespace)* ')'}. Permitted in \t{REQUIRED_USE} in EAPIs listed in
-table~\ref{tab:at-most-one-of-table} as supporting \t{REQUIRED_USE ??}\ 
groups.
+table~\ref{tab:dep-group-table} as supporting \t{REQUIRED_USE ??}\ groups.
 \item A use-conditional group, which consists of an optional exclamation mark, 
followed by
 a use flag name, followed by a question mark, followed by whitespace, 
followed by
 an open parenthesis, followed by whitespace, followed by zero or more of 
(a dependency item
@@ -150,15 +156,17 @@ In particular, note that whitespace is not optional.
 \end{centertable}
 
 \ChangeWhenAddingAnEAPI{7}
-\begin{centertable}{EAPIs supporting \t{REQUIRED_USE ??}\ groups}
-\label{tab:at-most-one-of-table}
-\begin{tabular}{ll}
+\begin{centertable}{EAPIs supporting additional group types}
+\label{tab:dep-group-table}
+\begin{tabular}{lll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{1}{c}{\textbf{Supports \t{REQUIRED_USE ??}\ groups?}} \\
+  \multicolumn{1}{c}{\textbf{Supports \t{REQUIRED_USE ??}\ groups?}} &
+  \multicolumn{1}{c}{\textbf{Supports \t{||=}\ groups?}} \\
   \midrule
-  0, 1, 2, 3, 4 & No  \\
-  5, 6, 7   & Yes \\
+  0, 1, 2, 3, 4 & No  & No  \\
+  5, 6  & Yes & No  \\
+  7 & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -186,6 +194,29 @@ considered to be matched if its associated package 
dependency specification is n
 
 An empty any-of group counts as being matched.
 
+\subsection{Binding leftmost-of dependency specifications}
+
+Any use-conditional group that is an immediate child of a binding leftmost-of 
group, if not enabled
+(disabled for an exclamation mark prefixed use flag name), is not considered a 
member of the binding
+leftmost-of group for match purposes.
+
+In a binding leftmost-of group, at least one immediate child element must be 
matched. A blocker is
+considered to be matched if its associated package dependency specification is 
not matched.
+In addition, for runtime dependencies, indicates that the package will break 
unless the dependency
+corresponding to the first immediate child (in order of listing) matched in 
\t{ESYSROOT} at the time
+the package was built is satisfied.
+
+An empty binding leftmost-of group counts as being matched.
+
+To implement the binding leftmost-of operator, the package manager will need 
to store which of
+the immediate child elements were matched. This syntax is only for package 
manager use and must not
+be used by ebuilds. Only the first matched child element needs to be indicated.
+
+Whenever the binding leftmost-of group is used in an enabled dependency group, 
the 

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

2017-10-04 Thread Michał Górny
commit: 89207aec09bf4c82c8dc1abbc4feb11792ed5400
Author: Michał Górny  gentoo  org>
AuthorDate: Wed Oct  4 17:44:06 2017 +
Commit: Michał Górny  gentoo  org>
CommitDate: Wed Oct  4 20:25:38 2017 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=89207aec

EAPI 7 has sandbox directory removal functions.

Bug: https://bugs.gentoo.org/630422

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 441de70..0055070 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{rm*} sandbox functions & \compactfeatureref{sandbox-rm} &
+No & No & No & No & Yes \\
+
 \t{IUSE_RUNTIME} & \compactfeatureref{iuse-runtime} &
 No & No & No & No & Yes \\
 
@@ -475,6 +478,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item automatic enforcing of \t{REQUIRED_USE} is supported, 
\featureref{auto-req-use}.
 \item binding leftmost-of (\t{||=}) dependency group is supported, 
\featureref{binding-leftmost-of}.
 \item runtime-modifiable USE flags (\t{IUSE_RUNTIME}) are supported, 
\featureref{iuse-runtime}.
+\item sandbox path removal flags (\t{rm*}) are supported, 
\featureref{sandbox-rm}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index eac9bc8..70f4d5b 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -88,6 +88,35 @@ argument. Ebuilds must not run any of these commands once 
the current phase func
 \item[adddeny] Add a directory to the deny list.
 \end{description}
 
+\featurelabel{sandbox-rm} Additionally, in EAPIs listed in 
table~\ref{tab:sandbox-command-table}
+as supporting the respective commands, the following commands are available:
+\begin{description}
+\item[rmread] Remove a directory from the permitted read list.
+\item[rmwrite] Remove a directory from the permitted write list.
+\item[rmpredict] Remove a directory from the predict list.
+\item[rmdeny] Remove a directory from the deny list.
+\end{description}
+
+All of those commands match paths exactly. Removing a directory that is not 
present on the list
+is silently ignored.
+
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{Additional sandbox commands by EAPI}
+\label{tab:sandbox-command-table}
+\begin{tabular}{l}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{\t{rmread}?}} &
+  \multicolumn{1}{c}{\textbf{\t{rmwrite}?}} &
+  \multicolumn{1}{c}{\textbf{\t{rmpredict}?}} &
+  \multicolumn{1}{c}{\textbf{\t{rmdeny}?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6 & No  & No  & No  & No  \\
+  7   & Yes & Yes & Yes & Yes \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \subsubsection{Package manager query commands}
 These commands are used to extract information about the system. Ebuilds must 
not run any of
 these commands in parallel with any other package manager command. Ebuilds 
must not run any of



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

2017-10-04 Thread Michał Górny
commit: a7ee638eb9db7c6a31a2b9a14f051616c8944e22
Author: Michał Górny  gentoo  org>
AuthorDate: Thu Sep 28 16:20:11 2017 +
Commit: Michał Górny  gentoo  org>
CommitDate: Wed Oct  4 20:22:57 2017 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=a7ee638e

EAPI 7 no longer adds trailing slash to ROOT, EROOT, D, ED.

Bug: https://bugs.gentoo.org/465772

 eapi-differences.tex |  5 +
 ebuild-env-vars.tex  | 58 ++--
 2 files changed, 52 insertions(+), 11 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 055e6c6..939c501 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+Trailing slash in \t{ROOT}, \t{D}... & \compactfeatureref{trailing-slash} &
+Yes & Yes & Yes & Yes & No \\
+
 Output cmds can use stdout & \compactfeatureref{output-no-stdout} &
 Yes & Yes & Yes & Yes & No \\
 
@@ -395,6 +398,8 @@ EAPI 7 is EAPI 6 with the following changes:
 \item Version manipulation and comparison functions added, 
\featureref{ver-functions}.
 \item \t{eqawarn} added, \featureref{eqawarn}.
 \item Output commands can no longer use stdout, \featureref{output-no-stdout}.
+\item \t{ROOT}, \t{EROOT}, \t{D}, \t{ED} no longer end with a trailing slash,
+\featureref{trailing-slash}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 1851aba..fe61ac5 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -121,14 +121,15 @@ variable.
The absolute path to the root directory into which the package is to be 
merged.  Phases which run
with full filesystem access must not touch any files outside of the 
directory given in
\t{ROOT}\@. Also of note is that in a cross-compiling environment, binaries 
inside of \t{ROOT}
-   will not be executable on the build machine, so ebuilds must not call them. 
\t{ROOT} must be
-   non-empty and end in a trailing slash. \\
+   will not be executable on the build machine, so ebuilds must not call them. 
The presence of
+   a trailing slash is EAPI-dependent as listed in 
table~\ref{tab:trailing-slash}. \\
 \t{EROOT} &
 \t{pkg_*} &
 No &
-Contains the path \t{\$\{ROOT\%/\}\$\{EPREFIX\}/} for convenience. See 
also the
-\t{EPREFIX} variable. Only for EAPIs listed in 
table~\ref{tab:offset-env-vars-table} as
-supporting \t{EROOT}. \\
+Contains the concatenation of the paths in \t{ROOT} and \t{EPREFIX} 
variables, for convenience.
+See also the \t{EPREFIX} variable. Only for EAPIs listed
+in table~\ref{tab:offset-env-vars-table} as supporting \t{EROOT}. The 
presence of a trailing
+slash EAPI-dependent as listed in table~\ref{tab:trailing-slash}. \\
 \t{T} &
 All &
 Partially\footnote{Consistent and preserved across a single connected 
sequence of install or
@@ -159,18 +160,21 @@ variable.
 \t{src_install} &
 No &
 Contains the full path to the image directory into which the package 
should be installed.
-Must be non-empty and end in a trailing slash. \\
+The presence of a trailing slash is EAPI-dependent as listed in 
table~\ref{tab:trailing-slash}.
+\\
 \t{D} (continued) &
 \t{pkg_preinst}, \t{pkg_postinst} &
 Yes &
-Contains the full path to the image that is about to be or has just been 
merged. Must be
-non-empty and end in a trailing slash. \\
+Contains the full path to the image that is about to be or has just been 
merged.
+The presence of a trailing slash is EAPI-dependent as listed in 
table~\ref{tab:trailing-slash}.
+\\
 \t{ED} &
 \t{src_install}, \t{pkg_preinst}, \t{pkg_postinst} &
 See \t{D} &
-Contains the path \t{\$\{D\%/\}\$\{EPREFIX\}/} for convenience. See also 
the
-\t{EPREFIX} variable. Only for EAPIs listed in 
table~\ref{tab:offset-env-vars-table} as
-supporting \t{ED}. \\
+Contains the concatenation of the paths in \t{D} and \t{EPREFIX} 
variables, for convenience.
+See also the \t{EPREFIX} variable. Only for EAPIs listed
+in table~\ref{tab:offset-env-vars-table} as supporting \t{ED}. The 
presence of a trailing
+slash EAPI-dependent as listed in table~\ref{tab:trailing-slash}. \\
 \t{DESTTREE} &
 \t{src_install} &
 No &
@@ -420,6 +424,38 @@ behaviour of offset-prefix aware and agnostic is the same 
when \t{EPREFIX} is se
 string in offset-prefix aware EAPIs. The latter do have the variables \t{ED} 
and \t{EROOT} properly
 set, though.
 
+\subsection{Path variables and trailing slash}
+\label{sec:trailing-slash}
+
+Unless specified otherwise, the paths provided through package manager 
variables do not end with
+a trailing slash and can not be empty. A few exceptions to that rule are listed
+in table~\ref{tab:trailing-slash} along with applicable EAPIs.
+
+For EAPIs where those variables are defined to always end with a trailing 
slash, 

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

2017-10-04 Thread Michał Górny
commit: 9559fbd6b367b2868a15f5d9d0e8789f4b40960f
Author: Michał Górny  gentoo  org>
AuthorDate: Fri Sep 29 03:17:43 2017 +
Commit: Michał Górny  gentoo  org>
CommitDate: Wed Oct  4 20:23:29 2017 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=9559fbd6

EAPI 7 removes PORTDIR and ECLASSDIR.

Bug: https://bugs.gentoo.org/373349
Bug: https://bugs.gentoo.org/373351

 eapi-differences.tex |  8 
 ebuild-env-vars.tex  | 18 +++---
 2 files changed, 19 insertions(+), 7 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 6e82904..3e06916 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,12 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{PORTDIR} & \compactfeatureref{portdir} &
+Yes & Yes & Yes & Yes & No \\
+
+\t{ECLASSDIR} & \compactfeatureref{eclassdir} &
+Yes & Yes & Yes & Yes & No \\
+
 \t{DESTTREE} & \compactfeatureref{desttree} &
 Yes & Yes & Yes & Yes & No \\
 
@@ -431,6 +437,8 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{package.provided} in profiles banned, \featureref{package-provided}.
 \item \t{DESTTREE} removed, \featureref{desttree}.
 \item \t{INSDESTTREE} removed, \featureref{insdesttree}.
+\item \t{PORTDIR} removed, \featureref{portdir}.
+\item \t{ECLASSDIR} removed, \featureref{eclassdir}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 0434083..f495014 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -110,11 +110,13 @@ variable.
 \t{PORTDIR} &
 \t{src_*} &
 No &
-The full path to the master repository's base directory. \\
+\featurelabel{portdir} The full path to the master repository's base 
directory.  Only for EAPIs
+listed in table~\ref{tab:removed-env-vars-table} as supporting 
\t{PORTDIR}. \\
 \t{ECLASSDIR} &
 \t{src_*} &
 No &
-The full path to the master repository's eclass directory. \\
+\featurelabel{eclassdir} The full path to the master repository's eclass 
directory.  Only for
+EAPIs listed in table~\ref{tab:removed-env-vars-table} as supporting 
\t{ECLASSDIR}.\\
 \t{ROOT} &
\t{pkg_*} &
No &
@@ -284,17 +286,19 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various removed env variables}
 \label{tab:removed-env-vars-table}
-\begin{tabular}{l}
+\begin{tabular}{lll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{c}{\textbf{\t{AA}?}} &
   \multicolumn{1}{c}{\textbf{\t{KV}?}} &
   \multicolumn{1}{c}{\textbf{\t{DESTTREE}?}} &
-  \multicolumn{1}{c}{\textbf{\t{INSDESTTREE}?}} \\
+  \multicolumn{1}{c}{\textbf{\t{INSDESTTREE}?}} &
+  \multicolumn{1}{c}{\textbf{\t{PORTDIR}?}} &
+  \multicolumn{1}{c}{\textbf{\t{ECLASSDIR}?}} \\
   \midrule
-  0, 1, 2, 3& Yes & Yes & Yes & Yes \\
-  4, 5, 6   & No  & No  & Yes & Yes \\
-  7 & No  & No  & No  & No  \\
+  0, 1, 2, 3& Yes & Yes & Yes & Yes & Yes & Yes \\
+  4, 5, 6   & No  & No  & Yes & Yes & Yes & Yes \\
+  7 & No  & No  & No  & No  & No  & No  \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2017-10-04 Thread Michał Górny
commit: 85acabdf359a8fe02b8d1c485560b58cc07a3869
Author: Michał Górny  gentoo  org>
AuthorDate: Sat Sep 23 23:46:32 2017 +
Commit: Michał Górny  gentoo  org>
CommitDate: Wed Oct  4 20:22:57 2017 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=85acabdf

dependencies: Provide a nice summary table for dep APIs

 dependencies.tex | 18 +-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/dependencies.tex b/dependencies.tex
index 92e7bb9..63d8c53 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -26,6 +26,21 @@
 \end{tabular}
 \end{centertable}
 
+\begin{centertable}{Summary of other interfaces related to dependency classes}
+\label{tab:dependency-class-apis}
+\begin{tabular}{lccc}
+  \toprule
+  & \t{BDEPEND} & \t{DEPEND} & \t{RDEPEND}, \t{PDEPEND} \\
+  \midrule
+  binary compatible with & \t{CBUILD} & \t{CHOST} & \t{CHOST} \\
+  base unprefixed path & \t{/} & \t{\$\{SYSROOT\}} & \t{\$\{ROOT\}} \\
+  relevant offset-prefix & \t{\$\{BROOT\}} & \t{\$\{EPREFIX\}} & 
\t{\$\{EPREFIX\}} \\
+  path combined with prefix & \t{\$\{BROOT\}} & \t{\$\{ESYSROOT\}} & 
\t{\$\{EROOT\}} \\
+  PM query option & \t{-b} & \t{-d} & \t{-r} \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 There are three classes of dependencies supported by ebuilds:
 
 \begin{compactitem}
@@ -51,7 +66,8 @@ as supporting \t{BDEPEND}, the build dependencies are split 
into two subclasses:
 \end{compactitem}
 
 Table~\ref{tab:phase-function-dependency-classes} lists dependencies which 
must be satisfied before
-a particular phase function is executed.
+a particular phase function is executed. Table~\ref{tab:dependency-class-api} 
summarizes
+additional interfaces related to the dependency classes.
 
 In addition, \t{SRC_URI}, \t{HOMEPAGE}, \t{RESTRICT}, \t{PROPERTIES}, 
\t{LICENSE} and
 \t{REQUIRED_USE} use dependency-style specifications to specify their values.



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

2017-10-04 Thread Michał Górny
commit: 3d1573f9f686993713c37f2e7e806ddfd4d57f0c
Author: Michał Górny  gentoo  org>
AuthorDate: Wed Oct  4 17:35:57 2017 +
Commit: Michał Górny  gentoo  org>
CommitDate: Wed Oct  4 20:25:38 2017 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=3d1573f9

EAPI 7 supports runtime-modifiable USE flags.

Bug: https://bugs.gentoo.org/424283

 dependencies.tex |  3 ++-
 eapi-differences.tex |  4 
 ebuild-env-vars.tex  |  5 -
 ebuild-vars.tex  | 16 
 eclasses.tex | 11 ++-
 metadata-cache.tex   |  1 +
 pkg-mgr-commands.tex |  4 
 7 files changed, 33 insertions(+), 11 deletions(-)

diff --git a/dependencies.tex b/dependencies.tex
index d9592d9..acc447c 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -181,7 +181,8 @@ In a use-conditional group, if the associated use flag is 
enabled (or disabled i
 exclamation mark prefix), all of the child elements must be matched.
 
 It is an error for a flag to be used if it is not included in 
\t{IUSE_EFFECTIVE} as described in
-section~\ref{sec:use-iuse-handling}.
+section~\ref{sec:use-iuse-handling}. Flags listed in \t{IUSE_RUNTIME} can be 
used only
+in \t{RDEPEND}, \t{PDEPEND} and \t{REQUIRED_USE}.
 
 \subsection{Any-of dependency specifications}
 

diff --git a/eapi-differences.tex b/eapi-differences.tex
index a89f5f8..441de70 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{IUSE_RUNTIME} & \compactfeatureref{iuse-runtime} &
+No & No & No & No & Yes \\
+
 \t{||=} dependency group & \compactfeatureref{binding-leftmost-of} &
 No & No & No & No & Yes \\
 
@@ -471,6 +474,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{die} guaranteed to work in a subshell environment, 
\featureref{subshell-die}.
 \item automatic enforcing of \t{REQUIRED_USE} is supported, 
\featureref{auto-req-use}.
 \item binding leftmost-of (\t{||=}) dependency group is supported, 
\featureref{binding-leftmost-of}.
+\item runtime-modifiable USE flags (\t{IUSE_RUNTIME}) are supported, 
\featureref{iuse-runtime}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index f495014..42bd3a2 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -355,10 +355,12 @@ table~\ref{tab:locale-settings}.
 \subsection{USE and IUSE handling}
 \label{sec:use-iuse-handling}
 
-This section discusses the handling of four variables:
+This section discusses the handling of five variables:
 
 \begin{description}
 \item[IUSE] is the variable calculated from the \t{IUSE} values defined in 
ebuilds and eclasses.
+\item[IUSE_RUNTIME] is the variable calculated from the \t{IUSE_RUNTIME} 
values defined in ebuilds
+and eclasses.
 \item[IUSE_REFERENCEABLE] is a variable calculated from \t{IUSE} and a variety 
of other sources
 described below. It is purely a conceptual variable; it is not exported to 
the ebuild
 environment. Values in \t{IUSE_REFERENCEABLE} may legally be used in 
queries from other
@@ -392,6 +394,7 @@ as supporting profile defined \t{IUSE} injection, 
\t{IUSE_EFFECTIVE} contains th
 
 \begin{compactitem}
 \item All values in the calculated \t{IUSE} value.
+\item All values in the calculated \t{IUSE_RUNTIME} value, in EAPIs where this 
variable is defined.
 \item All values in the profile \t{IUSE_IMPLICIT} variable.
 \item All values in the profile variable named \t{USE_EXPAND_VALUES_\$\{v\}}, 
where \t{\$\{v\}}
 is any value in the intersection of the profile \t{USE_EXPAND_UNPREFIXED} 
and

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index e4efcae..17e40ed 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -67,6 +67,12 @@ Ebuilds may define any of the following variables:
 \t{IUSE} defaults, any use flag name in \t{IUSE} may be prefixed by at 
most one of a plus or a
 minus sign. If such a prefix is present, the package manager may use it as 
a suggestion as to
 the default value of the use flag if no other configuration overrides it.
+\item[IUSE_RUNTIME] \featurelabel{iuse-runtime} Additional \t{USE} flags used 
by the ebuild whose
+values can be altered in place without rebuilding from source. The flags 
listed
+in \t{IUSE_RUNTIME} must not alter the package built. They must not be 
referenced at build time,
+except for informational purposes. A single flag can not be listed in both 
\t{IUSE_RUNTIME}
+and \t{IUSE} simultaneously. Uses the same syntax as \t{IUSE}. Only in 
EAPIs listed
+in table~\ref{tab:optional-vars-table} as supporting \t{IUSE_RUNTIME}.
 \item[REQUIRED_USE] \featurelabel{required-use} Zero or more assertions that 
must be met by the
 configuration of \t{USE} flags to be valid for this ebuild. See 
section~\ref{sec:required-use}
 for description and section~\ref{sec:dependencies} for full syntax. Only 
in EAPIs listed in
@@ -103,14 +109,16 @@ Ebuilds 

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

2017-10-04 Thread Michał Górny
commit: e2757cd280f2904e3112f43464c0fc483634f0ec
Author: Michał Górny  gentoo  org>
AuthorDate: Fri Sep 29 14:02:49 2017 +
Commit: Michał Górny  gentoo  org>
CommitDate: Wed Oct  4 20:24:18 2017 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=e2757cd2

EAPI 7 bans dolib and libopts.

Bug: https://bugs.gentoo.org/630416

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index d9b5558..70eadb5 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -224,6 +224,12 @@ Most utilities die & \compactfeatureref{die-on-failure} &
 \t{dohtml} & \compactfeatureref{banned-commands} &
 Yes & Yes & Yes & Yes & Banned \\
 
+\t{dolib} & \compactfeatureref{banned-commands} &
+Yes & Yes & Yes & Yes & Banned \\
+
+\t{libopts} & \compactfeatureref{banned-commands} &
+Yes & Yes & Yes & Yes & Banned \\
+
 PM query options & \compactfeatureref{pm-query-options} &
 No & No & \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} \\
 
@@ -447,6 +453,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{PORTDIR} removed, \featureref{portdir}.
 \item \t{ECLASSDIR} removed, \featureref{eclassdir}.
 \item \t{domo} installs to \t{/usr/share/locale}, ignoring \t{into}, 
\featureref{domo-path}.
+\item \t{dolib} and \t{libopts} banned, \featureref{banned-commands}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index ae9a615..f3849fc 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -50,20 +50,22 @@ called, the package manager must abort the build process 
indicating an error.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Banned commands}
 \label{tab:banned-commands-table}
-\begin{tabular}{l}
+\begin{tabular}{lll}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
-  \multicolumn{4}{c}{\textbf{Command banned?}} \\
+  \multicolumn{6}{c}{\textbf{Command banned?}} \\
   \multicolumn{1}{c}{} &
   \multicolumn{1}{c}{\textbf{\t{dohard}}} &
   \multicolumn{1}{c}{\textbf{\t{dosed}}} &
   \multicolumn{1}{c}{\textbf{\t{einstall}}} &
-  \multicolumn{1}{c}{\textbf{\t{dohtml}}} \\
+  \multicolumn{1}{c}{\textbf{\t{dohtml}}} &
+  \multicolumn{1}{c}{\textbf{\t{dolib}}} &
+  \multicolumn{1}{c}{\textbf{\t{libopts}}} \\
   \midrule
-  0, 1, 2, 3& No  & No  & No  & No  \\
-  4, 5  & Yes & Yes & No  & No  \\
-  6 & Yes & Yes & Yes & No  \\
-  7 & Yes & Yes & Yes & Yes \\
+  0, 1, 2, 3& No  & No  & No  & No  & No  & No  \\
+  4, 5  & Yes & Yes & No  & No  & No  & No  \\
+  6 & Yes & Yes & Yes & No  & No  & No  \\
+  7 & Yes & Yes & Yes & Yes & Yes & Yes \\
   \bottomrule
 \end{tabular}
 \end{centertable}
@@ -503,7 +505,9 @@ can be extended or reduced (see below). The options that 
can be passed to \t{doh
 \item[dolib.so] As for \t{dolib.a} except each file is installed with mode 
\t{0755}.
 
 \item[dolib] As for \t{dolib.a} except that the default install mode can be 
overriden with
-the \t{install} options set by the most recent \t{libopts} call.
+the \t{install} options set by the most recent \t{libopts} call. In EAPIs 
listed
+in table~\ref{tab:banned-commands-table}, this command is banned as per
+section~\ref{sec:banned-commands}.
 
 \begin{algorithm}
 \caption{Determining the library directory} \label{alg:ebuild-libdir}
@@ -714,6 +718,8 @@ has returned.
 \item[exeopts] Sets the options passed by \t{doexe} et al.\ to the \t{install} 
command.
 
 \item[libopts] Sets the options passed by \t{dolib} et al.\ to the \t{install} 
command.
+In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is 
banned as
+per section~\ref{sec:banned-commands}.
 
 \end{description}
 



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

2017-10-04 Thread Michał Górny
commit: b000f78b21677fb5f574ef3a23ce299b6506996b
Author: Michał Górny  gentoo  org>
AuthorDate: Fri Sep 29 03:13:57 2017 +
Commit: Michał Górny  gentoo  org>
CommitDate: Wed Oct  4 20:23:21 2017 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=b000f78b

EAPI 7 removes DESTTREE and INSDESTTREE.

Bug: https://bugs.gentoo.org/173630

 eapi-differences.tex |  8 
 ebuild-env-vars.tex  | 18 --
 2 files changed, 20 insertions(+), 6 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index d6bf6b7..6e82904 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,12 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{DESTTREE} & \compactfeatureref{desttree} &
+Yes & Yes & Yes & Yes & No \\
+
+\t{INSDESTTREE} & \compactfeatureref{insdesttree} &
+Yes & Yes & Yes & Yes & No \\
+
 \t{package.provided} & \compactfeatureref{package-provided} &
 Yes & Yes & Yes & Yes & No \\
 
@@ -423,6 +429,8 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{best_version} and \t{has_version} drops the \t{-{}-host-root} option 
in favor of the
   \t{-b}, \t{-d}, and \t{-r} options, \featureref{pm-query-options}.
 \item \t{package.provided} in profiles banned, \featureref{package-provided}.
+\item \t{DESTTREE} removed, \featureref{desttree}.
+\item \t{INSDESTTREE} removed, \featureref{insdesttree}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index e91f36e..0434083 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -199,11 +199,14 @@ variable.
 \t{DESTTREE} &
 \t{src_install} &
 No &
-Controls the location where \t{dobin}, \t{dolib}, \t{domo}, and \t{dosbin} 
install things. \\
+\featurelabel{desttree} Controls the location where \t{dobin}, \t{dolib}, 
\t{domo},
+and \t{dosbin} install things.  Only for EAPIs listed in 
table~\ref{tab:removed-env-vars-table}
+as supporting \t{DESTTREE}. \\
 \t{INSDESTTREE} &
 \t{src_install} &
 No &
-Controls the location where \t{doins} installs things. \\
+\featurelabel{insdesttree} Controls the location where \t{doins} installs 
things. Only for EAPIs
+listed in table~\ref{tab:removed-env-vars-table} as supporting 
\t{INSDESTTREE}. \\
 \t{USE} &
 All &
 Yes &
@@ -281,14 +284,17 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various removed env variables}
 \label{tab:removed-env-vars-table}
-\begin{tabular}{lll}
+\begin{tabular}{l}
   \toprule
   \multicolumn{1}{c}{\textbf{EAPI}} &
   \multicolumn{1}{c}{\textbf{\t{AA}?}} &
-  \multicolumn{1}{c}{\textbf{\t{KV}?}} \\
+  \multicolumn{1}{c}{\textbf{\t{KV}?}} &
+  \multicolumn{1}{c}{\textbf{\t{DESTTREE}?}} &
+  \multicolumn{1}{c}{\textbf{\t{INSDESTTREE}?}} \\
   \midrule
-  0, 1, 2, 3& Yes & Yes \\
-  4, 5, 6, 7& No  & No  \\
+  0, 1, 2, 3& Yes & Yes & Yes & Yes \\
+  4, 5, 6   & No  & No  & Yes & Yes \\
+  7 & No  & No  & No  & No  \\
   \bottomrule
 \end{tabular}
 \end{centertable}



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

2017-10-04 Thread Michał Górny
commit: 8a7ff2daae4afdb618c3f636039ef9b6a1b7
Author: Michał Górny  gentoo  org>
AuthorDate: Fri Sep 29 13:48:46 2017 +
Commit: Michał Górny  gentoo  org>
CommitDate: Wed Oct  4 20:24:18 2017 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=8a7ff2da

pkg-mgr-commands: Redefine dolib* in terms of libdir.a

Since EAPI 7 removes dolib, it would be a bad fit to describe the two
other commands on top of one that is removed. Instead, start by defining
libdir.a and then define the two other commands on top of it.

This also clarifies that dolib.a & dolib.so do not respect libopts,
while the old wording was not clear on that. However, this is at least
how it was implemented in Portage (with dolib.a and dolib.so overriding
libopts completely).

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

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index bfc3e99..ae9a615 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -494,15 +494,16 @@ can be extended or reduced (see below). The options that 
can be passed to \t{doh
 symlink is encountered. Failure behaviour is EAPI dependent as per
 section~\ref{sec:failure-behaviour}.
 
-\item[dolib] For each argument, installs it into the appropriate library 
subdirectory under
-\t{DESTTREE}, as determined by Algorithm~\ref{alg:ebuild-libdir}. Files 
are installed by default
-with file mode \t{0644}, or with the \t{install} options set by the most 
recent \t{libopts}
-call. Any symlinks are installed into the same directory as relative links 
to their original
-target. Failure behaviour is EAPI dependent as per 
section~\ref{sec:failure-behaviour}.
+\item[dolib.a] For each argument, installs it into the appropriate library 
subdirectory under
+\t{DESTTREE}, as determined by Algorithm~\ref{alg:ebuild-libdir}. Files 
are installed
+with file mode \t{0644}. Any symlinks are installed into the same 
directory as relative links
+to their original target. Failure behaviour is EAPI dependent as per
+section~\ref{sec:failure-behaviour}.
 
-\item[dolib.a] As for \t{dolib} except each file is installed with mode 
\t{0644}.
+\item[dolib.so] As for \t{dolib.a} except each file is installed with mode 
\t{0755}.
 
-\item[dolib.so] As for \t{dolib} except each file is installed with mode 
\t{0755}.
+\item[dolib] As for \t{dolib.a} except that the default install mode can be 
overriden with
+the \t{install} options set by the most recent \t{libopts} call.
 
 \begin{algorithm}
 \caption{Determining the library directory} \label{alg:ebuild-libdir}



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

2017-10-04 Thread Michał Górny
commit: 1882a752641de7b1c63aa58207dda10a92f90f31
Author: Ulrich Müller  gentoo  org>
AuthorDate: Sun Nov 29 23:00:32 2015 +
Commit: Michał Górny  gentoo  org>
CommitDate: Wed Oct  4 20:22:50 2017 +
URL:https://gitweb.gentoo.org/proj/pms.git/commit/?id=1882a752

EAPI 7 supports a directory for package.mask.

Bug: https://bugs.gentoo.org/282296

 eapi-differences.tex |  4 
 tree-layout.tex  | 20 
 2 files changed, 24 insertions(+)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index d6e270a..9d7ec60 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{package.mask} directory & \compactfeatureref{package-mask-dir} &
+No & No & No & No & Yes \\
+
 Stable use masking/forcing & \compactfeatureref{stablemask} &
 No & No & Yes & Yes & Yes \\
 
@@ -373,6 +376,7 @@ EAPI 6 is EAPI 5 with the following changes:
 EAPI 7 is EAPI 6 with the following changes:
 
 \begin{compactitem}
+\item \t{profiles/package.mask} can be a directory, 
\featureref{package-mask-dir}.
 \item \t{dohtml} banned, \featureref{banned-commands}.
 \end{compactitem}
 

diff --git a/tree-layout.tex b/tree-layout.tex
index 1c23357..d09feef 100644
--- a/tree-layout.tex
+++ b/tree-layout.tex
@@ -107,6 +107,12 @@ manager must ignore any files in this directory that it 
does not recognise.
 Contains a list, one entry per line, of package dependency specifications 
(using the directory's
 EAPI). Any package version matching one of these is considered to be 
masked, and will not be
 installed regardless of profile unless it is unmasked by the user 
configuration.
+
+\featurelabel{package-mask-dir} For EAPIs listed in 
table~\ref{tab:package-mask-dir} as
+supporting it, \t{package.mask} can be a directory instead of a regular 
file. Files contained
+in that directory, unless their name begins with a dot, will be 
concatenated in order of their
+filename in the POSIX locale and the result will be processed as if it 
were a single file.
+Any subdirectories will be ignored.
 \item[profiles.desc] Described below in section~\ref{sec:profiles.desc}.
 \item[repo_name] Contains, on a single line, the name of this repository. The 
repository name must
 conform to section~\ref{sec:repository-names}.
@@ -123,6 +129,20 @@ manager must ignore any files in this directory that it 
does not recognise.
 \item[updates/] This directory is described in section~\ref{sec:updates-dir}.
 \end{description}
 
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPIs supporting a directory for \t{package.mask}}
+\label{tab:package-mask-dir}
+\begin{tabular}{ll}
+  \toprule
+  \multicolumn{1}{c}{\textbf{EAPI}} &
+  \multicolumn{1}{c}{\textbf{\t{package.mask} can be a directory?}} \\
+  \midrule
+  0, 1, 2, 3, 4, 5, 6 & No  \\
+  7   & Yes \\
+  \bottomrule
+\end{tabular}
+\end{centertable}
+
 \subsection{The profiles.desc file}
 \label{sec:profiles.desc}
 \t{profiles.desc} is a line-based file, with the standard commenting



  1   2   3   >