commit:     1d5b43ab215e7062d48a581b18f69df4eccb40ac
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Nov 30 09:56:38 2019 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat Dec  7 14:36:28 2019 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1d5b43ab

python*r1.eclass: Reliably allow empty <pattern>s to gen funcs

Reliably allow empty pattern lists (equivalent to no restrictions)
in all pattern-based generator functions, notably python_gen_cond_dep.
Previously, only some of the functions accepted them while others
failed via _python_impl_matches function.

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 eclass/python-r1.eclass        | 13 ++++++-------
 eclass/python-single-r1.eclass |  9 ++++-----
 eclass/python-utils-r1.eclass  |  6 ++++--
 3 files changed, 14 insertions(+), 14 deletions(-)

diff --git a/eclass/python-r1.eclass b/eclass/python-r1.eclass
index ea4d1e3d4e4..479c4d08234 100644
--- a/eclass/python-r1.eclass
+++ b/eclass/python-r1.eclass
@@ -278,7 +278,7 @@ _python_validate_useflags() {
 
 # @FUNCTION: _python_gen_usedep
 # @INTERNAL
-# @USAGE: <pattern> [...]
+# @USAGE: [<pattern>...]
 # @DESCRIPTION:
 # Output a USE dependency string for Python implementations which
 # are both in PYTHON_COMPAT and match any of the patterns passed
@@ -353,7 +353,7 @@ python_gen_usedep() {
 }
 
 # @FUNCTION: python_gen_useflags
-# @USAGE: <pattern> [...]
+# @USAGE: [<pattern>...]
 # @DESCRIPTION:
 # Output a list of USE flags for Python implementations which
 # are both in PYTHON_COMPAT and match any of the patterns passed
@@ -390,7 +390,7 @@ python_gen_useflags() {
 }
 
 # @FUNCTION: python_gen_cond_dep
-# @USAGE: <dependency> <pattern> [...]
+# @USAGE: <dependency> [<pattern>...]
 # @DESCRIPTION:
 # Output a list of <dependency>-ies made conditional to USE flags
 # of Python implementations which are both in PYTHON_COMPAT and match
@@ -486,9 +486,8 @@ python_gen_impl_dep() {
        local PYTHON_REQ_USE=${1}
        shift
 
-       local patterns=( "${@-*}" )
        for impl in "${_PYTHON_SUPPORTED_IMPLS[@]}"; do
-               if _python_impl_matches "${impl}" "${patterns[@]}"; then
+               if _python_impl_matches "${impl}" "${@}"; then
                        local PYTHON_PKG_DEP
                        python_export "${impl}" PYTHON_PKG_DEP
                        matches+=( "python_targets_${impl}? ( ${PYTHON_PKG_DEP} 
)" )
@@ -566,7 +565,7 @@ python_gen_any_dep() {
 
        local i PYTHON_PKG_DEP out=
        for i in "${_PYTHON_SUPPORTED_IMPLS[@]}"; do
-               if _python_impl_matches "${i}" "${@-*}"; then
+               if _python_impl_matches "${i}" "${@}"; then
                        local 
PYTHON_USEDEP="python_targets_${i}(-),python_single_target_${i}(+)"
                        python_export "${i}" PYTHON_PKG_DEP
 
@@ -763,7 +762,7 @@ python_setup() {
                fi
 
                # check patterns
-               _python_impl_matches "${impl}" "${@-*}" || continue
+               _python_impl_matches "${impl}" "${@}" || continue
 
                python_export "${impl}" EPYTHON PYTHON
 

diff --git a/eclass/python-single-r1.eclass b/eclass/python-single-r1.eclass
index 7adb136101a..5c6be1c9b11 100644
--- a/eclass/python-single-r1.eclass
+++ b/eclass/python-single-r1.eclass
@@ -252,7 +252,7 @@ if [[ ! ${_PYTHON_SINGLE_R1} ]]; then
 
 # @FUNCTION: _python_gen_usedep
 # @INTERNAL
-# @USAGE: <pattern> [...]
+# @USAGE: [<pattern>...]
 # @DESCRIPTION:
 # Output a USE dependency string for Python implementations which
 # are both in PYTHON_COMPAT and match any of the patterns passed
@@ -327,7 +327,7 @@ python_gen_usedep() {
 }
 
 # @FUNCTION: python_gen_useflags
-# @USAGE: <pattern> [...]
+# @USAGE: [<pattern>...]
 # @DESCRIPTION:
 # Output a list of USE flags for Python implementations which
 # are both in PYTHON_COMPAT and match any of the patterns passed
@@ -364,7 +364,7 @@ python_gen_useflags() {
 }
 
 # @FUNCTION: python_gen_cond_dep
-# @USAGE: <dependency> <pattern> [...]
+# @USAGE: <dependency> [<pattern>...]
 # @DESCRIPTION:
 # Output a list of <dependency>-ies made conditional to USE flags
 # of Python implementations which are both in PYTHON_COMPAT and match
@@ -463,9 +463,8 @@ python_gen_impl_dep() {
        local PYTHON_REQ_USE=${1}
        shift
 
-       local patterns=( "${@-*}" )
        for impl in "${_PYTHON_SUPPORTED_IMPLS[@]}"; do
-               if _python_impl_matches "${impl}" "${patterns[@]}"; then
+               if _python_impl_matches "${impl}" "${@}"; then
                        local PYTHON_PKG_DEP
                        python_export "${impl}" PYTHON_PKG_DEP
                        matches+=( "python_single_target_${impl}? ( 
${PYTHON_PKG_DEP} )" )

diff --git a/eclass/python-utils-r1.eclass b/eclass/python-utils-r1.eclass
index 4f3ac66f215..3eadc50f93e 100644
--- a/eclass/python-utils-r1.eclass
+++ b/eclass/python-utils-r1.eclass
@@ -164,11 +164,12 @@ _python_set_impls() {
 }
 
 # @FUNCTION: _python_impl_matches
-# @USAGE: <impl> <pattern>...
+# @USAGE: <impl> [<pattern>...]
 # @INTERNAL
 # @DESCRIPTION:
 # Check whether the specified <impl> matches at least one
 # of the patterns following it. Return 0 if it does, 1 otherwise.
+# Matches if no patterns are provided.
 #
 # <impl> can be in PYTHON_COMPAT or EPYTHON form. The patterns can be
 # either:
@@ -176,7 +177,8 @@ _python_set_impls() {
 # b) '-2' to indicate all Python 2 variants (= !python_is_python3)
 # c) '-3' to indicate all Python 3 variants (= python_is_python3)
 _python_impl_matches() {
-       [[ ${#} -ge 2 ]] || die "${FUNCNAME}: takes at least 2 parameters"
+       [[ ${#} -ge 1 ]] || die "${FUNCNAME}: takes at least 1 parameter"
+       [[ ${#} -eq 1 ]] && return 0
 
        local impl=${1} pattern
        shift

Reply via email to