commit:     e5e4a35151f64b423c4201a30270a236dab3bf58
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Mar 23 17:52:12 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Fri Apr 14 16:27:52 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e5e4a351

multibuild.eclass: Reap stray subjobs before exiting sub-phase

Alike the PMS-defined phases, sub-phases do not support leaving jobs
behind. To avoid leaving something accidentally, make sure to reap all
jobs (i.e. wait) post running the command. Warn if any stray processes
are found since that indicates a bug in ebuild.

 eclass/multibuild.eclass | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/eclass/multibuild.eclass b/eclass/multibuild.eclass
index 0f89e4ec0b8..a29218d8d84 100644
--- a/eclass/multibuild.eclass
+++ b/eclass/multibuild.eclass
@@ -125,6 +125,18 @@ multibuild_foreach_variant() {
                _multibuild_run "${@}" \
                        > >(exec tee -a "${T}/build-${MULTIBUILD_ID}.log") 2>&1
                lret=${?}
+
+               # make sure no processes are left over
+               local leftovers=
+               while :; do
+                       wait -n
+                       [[ ${?} -eq 127 ]] && break || leftovers=1
+               done
+
+               if [[ ${leftovers} ]]; then
+                       ewarn "The multibuild function has left one or more 
processes running"
+                       ewarn "in the background. Please report a bug."
+               fi
        done
        [[ ${ret} -eq 0 && ${lret} -ne 0 ]] && ret=${lret}
 

Reply via email to