commit: 8e9d76f934875eb42576b8d650c8980572903b3a
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Oct 14 16:44:02 2015 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct 14 20:52:15 2015 +0000
URL: https://gitweb.gentoo.org/proj/pms.git/commit/?id=8e9d76f9
Explain eapply behavior for EAPI 6
pkg-mgr-commands.tex | 33 ++++++++++++++++++++++++++++++---
1 file changed, 30 insertions(+), 3 deletions(-)
diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index dbdbdfd..1512dac 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -148,8 +148,11 @@ 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}
- Only available in EAPIs listed in table~\ref{tab:patch-commands} as
supporting \t{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}.
\item[eapply\_user] \featurelabel{eapply-user} Takes no arguments. Package
managers supporting it
apply user-provided patches to the source tree in the current working
directory. Exact behaviour
@@ -161,7 +164,31 @@ Ebuilds must not run any of these commands once the
current phase function has r
\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
options array
+ \STATE collect all parameters after the first \t{"-{}-"} in the 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 options
array
+ \STATE collect all remaining parameters in the files array
+\ENDIF
+
+\FOR{\$x in files}
+ \IF{\$x is a directory}
+ \FOR{\$f in all files matching \$x/*.diff and \$x/*.patch}
+ \STATE call \t{patch -p1 -f -g0 --no-backup-if-mismatch
"\$\{options[@]\}" "\$f"}
+ \IF{child process returns 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 returns with non-zero exit status}
+ \STATE return immediately with an error
+ \ENDIF
+ \ENDIF
+\ENDFOR
\end{algorithmic}
\end{algorithm}