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

List:       gentoo-dev
Subject:    [gentoo-dev] [PATCH 1/5] Introduce a common function to obtain enabled ABIs.
From:       Michał Górny <mgorny () gentoo ! org>
Date:       2013-01-26 22:08:12
Message-ID: 1359238096-13232-2-git-send-email-mgorny () gentoo ! org
[Download RAW message or body]

It will become especially useful when more ABI flags are introduced.
---
 gx86/eclass/multilib-build.eclass | 59 ++++++++++++++++++++++-----------------
 1 file changed, 34 insertions(+), 25 deletions(-)

diff --git a/gx86/eclass/multilib-build.eclass b/gx86/eclass/multilib-build.eclass
index d8bd5ab..20d4f1c 100644
--- a/gx86/eclass/multilib-build.eclass
+++ b/gx86/eclass/multilib-build.eclass
@@ -39,6 +39,23 @@ IUSE=multilib
 # @CODE
 MULTILIB_USEDEP='multilib(-)?'
 
+# @FUNCTION: multilib_get_enabled_abis
+# @DESCRIPTION:
+# Return the ordered list of enabled ABIs if multilib builds
+# are enabled. The best (most preferred) ABI will come last.
+#
+# If multilib is disabled, the default ABI will be returned
+# in order to enforce consistent testing with multilib code.
+multilib_get_enabled_abis() {
+	debug-print-function ${FUNCNAME} "${@}"
+
+	if use multilib; then
+		get_all_abis
+	else
+		echo ${DEFAULT_ABI}
+	fi
+}
+
 # @FUNCTION: multilib_foreach_abi
 # @USAGE: <argv>...
 # @DESCRIPTION:
@@ -51,15 +68,11 @@ MULTILIB_USEDEP='multilib(-)?'
 multilib_foreach_abi() {
 	local initial_dir=${BUILD_DIR:-${S}}
 
-	if use multilib; then
-		local ABI
-		for ABI in $(get_all_abis); do
-			multilib_toolchain_setup "${ABI}"
-			BUILD_DIR=${initial_dir%%/}-${ABI} "${@}"
-		done
-	else
-		"${@}"
-	fi
+	local ABI
+	for ABI in $(multilib_get_enabled_abis); do
+		multilib_toolchain_setup "${ABI}"
+		BUILD_DIR=${initial_dir%%/}-${ABI} "${@}"
+	done
 }
 
 # @FUNCTION: multilib_parallel_foreach_abi
@@ -77,26 +90,22 @@ multilib_foreach_abi() {
 multilib_parallel_foreach_abi() {
 	local initial_dir=${BUILD_DIR:-${S}}
 
-	if use multilib; then
-		multijob_init
+	multijob_init
 
-		local ABI
-		for ABI in $(get_all_abis); do
-			(
-				multijob_child_init
+	local ABI
+	for ABI in $(multilib_get_enabled_abis); do
+		(
+			multijob_child_init
 
-				multilib_toolchain_setup "${ABI}"
-				BUILD_DIR=${initial_dir%%/}-${ABI}
-				"${@}"
-			) &
+			multilib_toolchain_setup "${ABI}"
+			BUILD_DIR=${initial_dir%%/}-${ABI}
+			"${@}"
+		) &
 
-			multijob_post_fork
-		done
+		multijob_post_fork
+	done
 
-		multijob_finish
-	else
-		"${@}"
-	fi
+	multijob_finish
 }
 
 _MULTILIB_BUILD=1
-- 
1.8.1.1


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

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