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}
 

Reply via email to