diff options
-rw-r--r-- | eclass/multibuild.eclass | 30 | ||||
-rw-r--r-- | eclass/multilib-build.eclass | 6 |
2 files changed, 19 insertions, 17 deletions
diff --git a/eclass/multibuild.eclass b/eclass/multibuild.eclass index 382d51d..249814a 100644 --- a/eclass/multibuild.eclass +++ b/eclass/multibuild.eclass @@ -194,32 +194,30 @@ multibuild_for_best_variant() { || die "MULTIBUILD_VARIANTS need to be set" # bash-4.1 can't handle negative subscripts - local MULTIBUILD_VARIANTS=( - "${MULTIBUILD_VARIANTS[$(( ${#MULTIBUILD_VARIANTS[@]} - 1 ))]}" - ) + local MULTIBUILD_VARIANTS=("$(multibuild_get_best_variant)") multibuild_foreach_variant "${@}" } -# @FUNCTION: multibuild_is_best_variant +# @FUNCTION: multibuild_get_best_variant # @DESCRIPTION: -# Sometimes, while iterating through multibuild variants, we might -# want to conditionalize some code on whether or not the current -# variant is the "best" variant, without explicitly needing to -# invoke multibuild_for_best_variant. +# Sometimes, we want to know what the best variant is according to +# multibuild (answer: it's always the last one on the list). # -# Returns zero if and only if the current variant is the same as -# would be activated by multibuild_for_best_variant. -multibuild_is_best_variant() { +# This performs some sanity checking and returns it on the standard +# output -- otherwise, folks would have to know the ordering +# implementation detail or use multibuild_for_best_variant which is +# a rather wasteful, and even potentially incorrect way to get the +# information. +# +# This may only be used if ${MULTIBUILD_VARIANTS} has been set. +# otherwise we die(), lest someone miss an error in a subshell. +multibuild_get_best_variant() { debug-print-function ${FUNCNAME} "${@}" [[ ${#} -eq 0 ]] || die "${FUNCNAME}: too many arguments" [[ ${MULTIBUILD_VARIANTS} ]] \ || die "MULTIBUILD_VARIANTS must be set" - [[ ${MULTIBUILD_VARIANT} ]] \ - || die "MULTIBUILD_VARIANT must be set" - - local best_variant="${MULTIBUILD_VARIANTS[$(( ${#MULTIBUILD_VARIANTS[@]} - 1 ))]}" - [[ ${MULTIBUILD_VARIANT} == ${best_variant} ]] + echo "${MULTIBUILD_VARIANTS[$(( ${#MULTIBUILD_VARIANTS[@]} - 1 ))]}" } # @FUNCTION: multibuild_copy_sources diff --git a/eclass/multilib-build.eclass b/eclass/multilib-build.eclass index da34923..62c8899 100644 --- a/eclass/multilib-build.eclass +++ b/eclass/multilib-build.eclass @@ -505,8 +505,12 @@ multilib_is_native_abi() { # during multilib_foreach_abi iteration. multilib_is_best_abi() { debug-print-function ${FUNCNAME} "${@}" + [[ ${MULTIBUILD_VARIANTS} ]] \ + || die "${FUNCNAME}: MULTIBUILD_VARIANTS need to be set" + [[ ${MULTIBUILD_VARIANT} && ${ABI} == ${MULTIBUILD_VARIANT} ]] \ + || die "${FUNCNAME}: non-sane MULTIBUILD_VARIANT/ABI: ${MULTIBUILD_VARIANT}/${ABI}" - multibuild_is_best_variant + [[ ${ABI} == $(multibuild_get_best_variant) ]] } # @FUNCTION: abi_arch_use |