diff options
-rw-r--r-- | eclass/python.eclass | 79 |
1 files changed, 77 insertions, 2 deletions
diff --git a/eclass/python.eclass b/eclass/python.eclass index 36c17b2d567f..20e59e851565 100644 --- a/eclass/python.eclass +++ b/eclass/python.eclass @@ -1,6 +1,6 @@ # Copyright 1999-2008 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/eclass/python.eclass,v 1.54 2008/10/30 05:21:46 zmedico Exp $ +# $Header: /var/cvsroot/gentoo-x86/eclass/python.eclass,v 1.55 2009/05/27 22:49:32 betelgeuse Exp $ # @ECLASS: python.eclass # @MAINTAINER: @@ -14,8 +14,11 @@ inherit alternatives multilib if [[ -n "${NEED_PYTHON}" ]] ; then - DEPEND=">=dev-lang/python-${NEED_PYTHON}" + PYTHON_ATOM=">=dev-lang/python-${NEED_PYTHON}" + DEPEND="${PYTHON_ATOM}" RDEPEND="${DEPEND}" +else + PYTHON_ATOM="dev-lang/python" fi __python_eclass_test() { @@ -59,6 +62,78 @@ python_version() { __python_version_extract $PYVER_ALL } +# @ECLASS-VARIABLE: PYTHON_USE_WITH +# @DESCRIPTION: +# Set this to a space separated list of use flags +# the python slot in use must be built with. + +# @ECLASS-VARIABLE: PYTHON_USE_WITH_OR +# @DESCRIPTION: +# Set this to a space separated list of use flags +# of which one must be turned on for the slot of +# in use. + +# @ECLASS-VARIABLE: PYTHON_USE_WITH_OPT +# @DESCRIPTION: +# Set this if you need to make either PYTHON_USE_WITH or +# PYTHON_USE_WITH_OR atoms conditional under a use flag. + +# @FUNCTION: python_pkg_setup +# @DESCRIPTION: +# Makes sure PYTHON_USE_WITH or PYTHON_USE_WITH_OR listed use flags +# are respected. Only exported if one of those variables is set. +if ! has ${EAPI} 0 1 && [[ -n ${PYTHON_USE_WITH} || -n ${PYTHON_USE_WITH_OR} ]]; then + python_pkg_setup_fail() { + eerror "${1}" + die "${1}" + } + + python_pkg_setup() { + [[ ${PYTHON_USE_WITH_OPT} ]] && use !${PYTHON_USE_WITH_OPT} && return + + python_version + local failed + local pyatom="dev-lang/python:${PYVER}" + + for use in ${PYTHON_USE_WITH}; do + if ! has_version "${pyatom}[${use}]"; then + python_pkg_setup_fail \ + "Please rebuild ${pyatom} with use flags: ${PYTHON_USE_WITH}" + fi + done + + for use in ${PYTHON_USE_WITH_OR}; do + if has_version "${pyatom}[${use}]"; then + return + fi + done + + if [[ ${PYTHON_USE_WITH_OR} ]]; then + python_pkg_setup_fail \ + "Please rebuild ${pyatom} with one of: ${PYTHON_USE_WITH_OR}" + fi + } + + EXPORT_FUNCTIONS pkg_setup + + if [[ ${PYTHON_USE_WITH} ]]; then + PYTHON_USE_WITH_ATOM="${PYTHON_ATOM}[${PYTHON_USE_WITH/ /,}]" + elif [[ ${PYTHON_USE_WITH_OR} ]]; then + PYTHON_USE_WITH_ATOM="|| ( " + for use in ${PYTHON_USE_WITH_OR}; do + PYTHON_USE_WITH_ATOM=" + ${PYTHON_USE_WITH_ATOM} + ${PYTHON_ATOM}[${use}]" + done + PYTHON_USE_WITH_ATOM="${PYTHON_USE_WITH_ATOM} )" + fi + if [[ ${PYTHON_USE_WITH_OPT} ]]; then + PYTHON_USE_WITH_ATOM="${PYTHON_USE_WITH_OPT}? ( ${PYTHON_USE_WITH_ATOM} )" + fi + DEPEND="${PYTHON_USE_WITH_ATOM}" + RDEPEND="${PYTHON_USE_WITH_ATOM}" +fi + # @FUNCTION: python_disable_pyc # @DESCRIPTION: # Tells python not to automatically recompile modules to .pyc/.pyo |