Pacho Ramos has suggested making vala_src_prepare() into a no-op in the common situation where vala is in IUSE and USE=-vala.
--- a/vala.eclass +++ b/vala.eclass @@ -77,20 +77,36 @@ } # @FUNCTION: vala_src_prepare -# @USAGE: [--vala-api-version api_version] +# @USAGE: [--ignore-use] [--vala-api-version api_version] # @DESCRIPTION: # Sets up the environment variables and pkgconfig files for the # specified API version, or, if no version is specified, for the # highest installed vala API version satisfying # VALA_MAX_API_VERSION, VALA_MIN_API_VERSION, and VALA_USE_DEPEND. -# Dies if called without --vala-api-version and no suitable vala -# version is found. +# Is a no-op if called without --ignore-use when USE=-vala. +# Dies if the USE check is passed (or ignored) and a suitable vala +# version is not available. vala_src_prepare() { - local p d valafoo version + local p d valafoo version ignore_use - if [[ $1 = "--vala-api-version" ]]; then - version=$2 - [[ ${version} ]] || die "'--vala-api-version' option requires API version parameter." + while [[ $1 ]]; do + case $1 in + "--ignore-use" ) + ignore_use=1 ;; + "--vala-api-version" ) + shift + version=$1 + [[ ${version} ]] || die "'--vala-api-version' option requires API version parameter." + esac + shift + done + + if [[ -z ${ignore_use} ]]; then + has vala ${IUSE//+/} && ! use vala && return 0 + fi + + if [[ ${version} ]]; then + has_version "dev-lang/vala:${version}" || die "No installed vala:${version}" else version=$(vala_best_api_version) [[ ${version} ]] || die "No installed vala in $(vala_depend)"