[gentoo-commits] proj/pms:eapi-7 commit in: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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: /
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