mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-11-06 05:37:14 -08:00
python-r1.eclass: Introduce python_gen_impl_dep
Add a python_gen_impl_dep() that serves the purpose of generating custom dependencies on the Python interpreter (like PYTHON_DEPS). The function provides ability to request dependencies with another USE dependency string (different than global PYTHON_REQ_USE) and limit the dependencies to subset of supported implementations.
This commit is contained in:
@@ -383,6 +383,58 @@ python_gen_cond_dep() {
|
||||
echo "${matches[@]}"
|
||||
}
|
||||
|
||||
# @FUNCTION: python_gen_impl_dep
|
||||
# @USAGE: [<requested-use-flags> [<impl-pattern>...]]
|
||||
# @DESCRIPTION:
|
||||
# Output a dependency on Python implementations with the specified USE
|
||||
# dependency string appended, or no USE dependency string if called
|
||||
# without the argument (or with empty argument). If any implementation
|
||||
# patterns are passed, the output dependencies will be generated only
|
||||
# for the implementations matching them.
|
||||
#
|
||||
# Use this function when you need to request different USE flags
|
||||
# on the Python interpreter depending on package's USE flags. If you
|
||||
# only need a single set of interpreter USE flags, just set
|
||||
# PYTHON_REQ_USE and use ${PYTHON_DEPS} globally.
|
||||
#
|
||||
# Example:
|
||||
# @CODE
|
||||
# PYTHON_COMPAT=( python{2_7,3_{3,4}} pypy )
|
||||
# RDEPEND="foo? ( $(python_gen_impl_dep 'xml(+)') )"
|
||||
# @CODE
|
||||
#
|
||||
# It will cause the variable to look like:
|
||||
# @CODE
|
||||
# RDEPEND="foo? (
|
||||
# python_targets_python2_7? (
|
||||
# dev-lang/python:2.7[xml(+)] )
|
||||
# python_targets_pypy? (
|
||||
# dev-python/pypy[xml(+)] ) )"
|
||||
# @CODE
|
||||
python_gen_impl_dep() {
|
||||
debug-print-function ${FUNCNAME} "${@}"
|
||||
|
||||
local impl pattern
|
||||
local matches=()
|
||||
|
||||
local PYTHON_REQ_USE=${1}
|
||||
shift
|
||||
|
||||
local patterns=( "${@-*}" )
|
||||
for impl in "${_PYTHON_SUPPORTED_IMPLS[@]}"; do
|
||||
for pattern in "${patterns[@]}"; do
|
||||
if [[ ${impl} == ${pattern} ]]; then
|
||||
local PYTHON_PKG_DEP
|
||||
python_export "${impl}" PYTHON_PKG_DEP
|
||||
matches+=( "python_targets_${impl}? ( ${PYTHON_PKG_DEP} )" )
|
||||
break
|
||||
fi
|
||||
done
|
||||
done
|
||||
|
||||
echo "${matches[@]}"
|
||||
}
|
||||
|
||||
# @ECLASS-VARIABLE: BUILD_DIR
|
||||
# @DESCRIPTION:
|
||||
# The current build directory. In global scope, it is supposed to
|
||||
|
||||
Reference in New Issue
Block a user