[prev in list] [next in list] [prev in thread] [next in thread] 

List:       gentoo-dev
Subject:    [gentoo-dev] [PATCH] multibuild.eclass: Reap stray subjobs before exiting sub-phase
From:       Michał Górny <mgorny () gentoo ! org>
Date:       2017-03-23 17:55:39
Message-ID: 20170323175539.17716-1-mgorny () gentoo ! org
[Download RAW message or body]

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 0f89e4ec0b83..a29218d8d840 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}
 
-- 
2.12.1


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic