diff options
author | Michał Górny <mgorny@gentoo.org> | 2019-11-29 11:20:33 +0100 |
---|---|---|
committer | Michał Górny <mgorny@gentoo.org> | 2019-12-07 15:36:25 +0100 |
commit | 26467bacc4d873a6d9ad43ef61e8adc3927c6090 (patch) | |
tree | 5e1f0bc1792df68e3670288505fab0536414df7b /eclass/python-r1.eclass | |
parent | git-r3.eclass: Explicitly disable password prompts (diff) | |
download | gentoo-26467bacc4d873a6d9ad43ef61e8adc3927c6090.tar.gz gentoo-26467bacc4d873a6d9ad43ef61e8adc3927c6090.tar.bz2 gentoo-26467bacc4d873a6d9ad43ef61e8adc3927c6090.zip |
python*-r1.eclass: Deprecate python_gen_usedep
Deprecate python_gen_usedep() in favor of python_gen_cond_dep().
The latter is a newer API that generates full USE-conditional blocks
rather than pure USE-dependency strings. As such, it can replace all
uses of the former, and is safer to use in general. In particular:
dev-python/foo[$(python_gen_usedep -2)]
dev-python/bar[$(python_gen_usedep -2)]
installs the dependency (with no implementation match enforced) even
if there's no python2 implementation enabled, while:
$(python_gen_cond_dep '
dev-python/foo[${PYTHON_USEDEP}]
dev-python/bar[${PYTHON_USEDEP}]
' -2)
installs it only if there's at least one implementation requiring it.
Since the functions are used in global scope only, a deprecation warning
is emitted only once, during the sourcing for pkg_setup phase. This
avoids having it output during metadata cache regeneration.
Signed-off-by: Michał Górny <mgorny@gentoo.org>
Diffstat (limited to 'eclass/python-r1.eclass')
-rw-r--r-- | eclass/python-r1.eclass | 61 |
1 files changed, 45 insertions, 16 deletions
diff --git a/eclass/python-r1.eclass b/eclass/python-r1.eclass index 335ae9fe6370..ea4d1e3d4e41 100644 --- a/eclass/python-r1.eclass +++ b/eclass/python-r1.eclass @@ -276,9 +276,47 @@ _python_validate_useflags() { die "No supported Python implementation in PYTHON_TARGETS." } +# @FUNCTION: _python_gen_usedep +# @INTERNAL +# @USAGE: <pattern> [...] +# @DESCRIPTION: +# Output a USE dependency string for Python implementations which +# are both in PYTHON_COMPAT and match any of the patterns passed +# as parameters to the function. +# +# The patterns can be either fnmatch-style patterns (matched via bash +# == operator against PYTHON_COMPAT values) or '-2' / '-3' to indicate +# appropriately all enabled Python 2/3 implementations (alike +# python_is_python3). Remember to escape or quote the fnmatch patterns +# to prevent accidental shell filename expansion. +# +# This is an internal function used to implement python_gen_cond_dep +# and deprecated python_gen_usedep. +_python_gen_usedep() { + debug-print-function ${FUNCNAME} "${@}" + + local impl matches=() + + for impl in "${_PYTHON_SUPPORTED_IMPLS[@]}"; do + if _python_impl_matches "${impl}" "${@}"; then + matches+=( + "python_targets_${impl}(-)?" + "-python_single_target_${impl}(-)" + ) + fi + done + + [[ ${matches[@]} ]] || die "No supported implementations match python_gen_usedep patterns: ${@}" + + local out=${matches[@]} + echo "${out// /,}" +} + # @FUNCTION: python_gen_usedep # @USAGE: <pattern> [...] # @DESCRIPTION: +# DEPRECATED. Please use python_gen_cond_dep instead. +# # Output a USE dependency string for Python implementations which # are both in PYTHON_COMPAT and match any of the patterns passed # as parameters to the function. @@ -306,21 +344,12 @@ _python_validate_useflags() { python_gen_usedep() { debug-print-function ${FUNCNAME} "${@}" - local impl matches=() - - for impl in "${_PYTHON_SUPPORTED_IMPLS[@]}"; do - if _python_impl_matches "${impl}" "${@}"; then - matches+=( - "python_targets_${impl}(-)?" - "-python_single_target_${impl}(-)" - ) - fi - done - - [[ ${matches[@]} ]] || die "No supported implementations match python_gen_usedep patterns: ${@}" - - local out=${matches[@]} - echo "${out// /,}" + # output only once, during some reasonable phase + # (avoid spamming cache regen runs) + if [[ ${EBUILD_PHASE} == setup ]]; then + eqawarn "python_gen_usedep() is deprecated. Please use python_gen_cond_dep instead." + fi + _python_gen_usedep "${@}" } # @FUNCTION: python_gen_useflags @@ -405,7 +434,7 @@ python_gen_cond_dep() { # (since python_gen_usedep() will not return ${PYTHON_USEDEP} # the code is run at most once) if [[ ${dep} == *'${PYTHON_USEDEP}'* ]]; then - local usedep=$(python_gen_usedep "${@}") + local usedep=$(_python_gen_usedep "${@}") dep=${dep//\$\{PYTHON_USEDEP\}/${usedep}} fi |