commit: 2224881a5c8afa1ff4bd6314cf8e69c6025cf3b2
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Oct 14 16:44:02 2015 +0000
Commit: Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Thu Oct 15 07:48:19 2015 +0000
URL: https://gitweb.gentoo.org/proj/pms.git/commit/?id=2224881a
EAPI 6: Explain eapply behavior.
Bug: 463768
pkg-mgr-commands.tex | 31 +++++++++++++++++++++++++++++--
1 file changed, 29 insertions(+), 2 deletions(-)
diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 7997323..8fb8059 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -148,14 +148,41 @@ These commands are used during the \t{src\_prepare} phase
to apply patches to th
Ebuilds must not run any of these commands once the current phase function has
returned.
\begin{description}
-\item[eapply] \featurelabel{eapply}
+\item[eapply] \featurelabel{eapply} Takes zero or more GNU patch options,
followed by one or more
+ file or directory paths. Processes options and applies all patches found
in specified locations
+ according to Algorithm~\ref{alg:eapply}. If applying the patches fails, it
aborts the build
+ using \t{die}, unless run using \t{nonfatal}, in which case it returns
non-zero exit status.
Only available in EAPIs listed in table~\ref{tab:patch-commands} as
supporting \t{eapply}.
\end{description}
\begin{algorithm}
\caption{eapply logic} \label{alg:eapply}
\begin{algorithmic}[1]
-\STATE \COMMENT{WORK IN PROGRESS}
+\IF{any parameter is equal to \t{"-{}-"}}
+ \STATE collect all parameters before the first \t{"-{}-"} in the
\t{options} array
+ \STATE collect all parameters after the first \t{"-{}-"} in the \t{files}
array
+\ELSIF{any parameter that begins with a hyphen follows one that does not}
+ \STATE abort the build process with an error
+\ELSE
+ \STATE collect all parameters beginning with a hyphen in the \t{options}
array
+ \STATE collect all remaining parameters in the \t{files} array
+\ENDIF
+
+\FORALL{\t{x} in the \t{files} array}
+ \IF{\t{\$x} is a directory}
+ \FORALL{files \t{f} matching \t{\$x/*.diff} or \t{\$x/*.patch}, sorted
in POSIX locale}
+ \STATE call \t{patch -p1 -f -g0 -{}-no-backup-if-mismatch
"\$\{options[@]\}" < "\$f"}
+ \IF{child process returned with non-zero exit status}
+ \STATE return immediately with an error
+ \ENDIF
+ \ENDFOR
+ \ELSE
+ \STATE call \t{patch -p1 -f -g0 -{}-no-backup-if-mismatch
"\$\{options[@]\}" < "\$x"}
+ \IF{child process returned with non-zero exit status}
+ \STATE return immediately with an error
+ \ENDIF
+ \ENDIF
+\ENDFOR
\end{algorithmic}
\end{algorithm}