commit:     cbdee0efb3f2c00e7290fd8e66ff34fd415584de
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sun Oct 29 09:30:43 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat Feb 24 12:55:24 2018 +0000
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}.
+\end{description}
+
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPIs supporting controllable stripping}
+    \label{tab:dostrip}
+    \begin{tabular}{lll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports controllable stripping?}} &
+      \multicolumn{1}{c}{\textbf{Supports \t{dostrip}?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & No  & No  \\
+      7                   & Yes & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsection{USE list functions}
 These functions provide behaviour based upon set or unset use flags. Ebuilds 
must not run any of
 these commands once the current phase function has returned. It is an error if 
an ebuild calls any

Reply via email to