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]>
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
signature.asc
Description: PGP signature
