r4, ChangeLog:

3e30e1f Rename to scons-utils.eclass.
6477004 Remove exported phase functions.
41784fc Implement a cache in scons_clean_makeopts().
9b3ce5d Clarify doc on SCONSOPTS.
ac9f7ed Call scons_clean_makeopts() inline instead of exporting
        SCONSOPTS.
ae6afd9 Fix SCONSOPTS check in escons().

-- 
Best regards,
Michał Górny

<http://mgorny.alt.pl>
<xmpp:[email protected]>

Attachment: scons-utils.eclass
Description: Binary data

diff --git a/scons.eclass b/scons-utils.eclass
similarity index 85%
rename from scons.eclass
rename to scons-utils.eclass
index d29299c..bc91f96 100644
--- a/scons.eclass
+++ b/scons-utils.eclass
@@ -20,8 +20,8 @@
 # @ECLASS-VARIABLE: SCONSOPTS
 # @DESCRIPTION:
 # The default set of options to pass to scons. Similar to MAKEOPTS,
-# supposed to be set in make.conf. If unset, will be generated from
-# MAKEOPTS.
+# supposed to be set in make.conf. If unset, escons() will use cleaned
+# up MAKEOPTS instead.
 # @DEFAULT-UNSET
 
 # @ECLASS-VARIABLE: EXTRA_ESCONS
@@ -47,30 +47,6 @@ else
 	DEPEND="dev-util/scons"
 fi
 
-# -- exported phase functions --
-
-case "${EAPI:-0}" in
-	1|0) EXPORT_FUNCTIONS src_compile;;
-	*) EXPORT_FUNCTIONS src_configure src_compile;;
-esac
-
-# @FUNCTION: scons_src_configure
-# @DESCRIPTION:
-# A blank src_configure() for SCons packages not using explicit
-# configure phase.
-scons_src_configure() {
-	debug-print-function ${FUNCNAME} "$...@}"
-}
-
-# @FUNCTION: scons_src_compile
-# @DESCRIPTION:
-# The exported src_compile() implementation. Simply calls escons().
-scons_src_compile() {
-	debug-print-function ${FUNCNAME} "$...@}"
-
-	escons || die 'escons failed.'
-}
-
 # -- public functions --
 
 # @FUNCTION: escons
@@ -81,12 +57,8 @@ scons_src_compile() {
 escons() {
 	debug-print-function ${FUNCNAME} "$...@}"
 
-	# if SCONSOPTS are _unset_, create them from MAKEOPTS
-	if [[ -n ${SCONSOPTS+1} ]]; then
-		export SCONSOPTS=$(scons_clean_makeopts)
-	fi
-
-	set -- scons ${SCONSOPTS} ${EXTRA_ESCONS} "$...@}"
+	# if SCONSOPTS are _unset_, use cleaned MAKEOPTS
+	set -- scons ${SCONSOPTS-$(scons_clean_makeopts)} ${EXTRA_ESCONS} "$...@}"
 	echo "$...@}" >&2
 	"$...@}"
 }
@@ -104,13 +76,23 @@ scons_clean_makeopts() {
 	debug-print-function ${FUNCNAME} "$...@}"
 
 	if [[ ${#} -eq 0 ]]; then
-		debug-print "Using MAKEOPTS: ${MAKEOPTS}"
+		debug-print "Using MAKEOPTS: [${MAKEOPTS}]"
 		set -- ${MAKEOPTS}
 	else
 		# unquote if necessary
 		set -- ${*}
 	fi
 
+	# empty MAKEOPTS give out empty SCONSOPTS
+	# thus, we do need to worry about the initial setup
+	if [[ ${*} = ${_SCONS_CACHE_MAKEOPTS} ]]; then
+		set -- ${_SCONS_CACHE_SCONSOPTS}
+		debug-print "Cache hit: [${*}]"
+		echo ${*}
+		return
+	fi
+	export _SCONS_CACHE_MAKEOPTS=${*}
+
 	while [[ ${#} -gt 0 ]]; do
 		case ${1} in
 			# clean, simple to check -- we like that
@@ -167,8 +149,10 @@ scons_clean_makeopts() {
 		shift
 	done
 
-	debug-print "New SCONSOPTS: ${new_makeopts}"
-	echo ${new_makeopts}
+	set -- ${new_makeopts}
+	export _SCONS_CACHE_SCONSOPTS=${*}
+	debug-print "New SCONSOPTS: [${*}]"
+	echo ${*}
 }
 
 # @FUNCTION: use_scons

Attachment: signature.asc
Description: PGP signature

Reply via email to