# Copyright 1999-2010 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: $ # eblit-core # Usage: [version] [eval] # Main eblit engine eblit-core() { [[ -z $FILESDIR ]] && FILESDIR="$(dirname $EBUILD)/files" local e v func=$1 ver=$2 eval_=$3 for v in ${ver:+-}${ver} -${PVR} -${PV} "" ; do e="${FILESDIR}/eblits/${func}${v}.eblit" if [[ -e ${e} ]] ; then . "${e}" [[ ${eval_} == 1 ]] && eval "${func}() { eblit-run ${func} ${ver} ; }" return 0 fi done return 1 } # eblit-include # Usage: [--skip] [version] # Includes an "eblit" -- a chunk of common code among ebuilds in a given # package so that its functions can be sourced and utilized within the # ebuild. eblit-include() { local skipable=false r=0 [[ $1 == "--skip" ]] && skipable=true && shift [[ $1 == pkg_* ]] && skipable=true [[ -z $1 ]] && die "Usage: eblit-include [version]" eblit-core $1 $2 r="$?" ${skipable} && return 0 [[ "$r" -gt "0" ]] && die "Could not locate requested eblit '$1' in ${FILESDIR}/eblits/" } # eblit-run-maybe # Usage: # Runs a function if it is defined in an eblit eblit-run-maybe() { [[ $(type -t "$@") == "function" ]] && "$@" } # eblit-run # Usage: [version] # Runs a function defined in an eblit eblit-run() { eblit-include --skip common "${*:2}" eblit-include "$@" eblit-run-maybe eblit-$1-pre eblit-${PN}-$1 eblit-run-maybe eblit-$1-post } # eblit-pkg # Usage: [version] # Includes the given functions AND evals them so they're included in the binpkgs eblit-pkg() { [[ -z $1 ]] && die "Usage: eblit-pkg [version]" eblit-core $1 $2 1 }