python*r1.eclass: Reliably allow empty <pattern>s to gen funcs
authorMichał Górny <mgorny@gentoo.org>
Sat, 30 Nov 2019 09:56:38 +0000 (10:56 +0100)
committerMichał Górny <mgorny@gentoo.org>
Sat, 7 Dec 2019 14:36:28 +0000 (15:36 +0100)
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@gentoo.org>
eclass/python-r1.eclass
eclass/python-single-r1.eclass
eclass/python-utils-r1.eclass

index ea4d1e3d4e413d9c98471b70ca87cf4e9db8dad1..479c4d08234b112b1b20db3d6bb43b9ec6c2f631 100644 (file)
@@ -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
 
index 7adb136101ad8e4057998598bdd58c66a5a13c35..5c6be1c9b11ca6c45fbc7367b31f68c15f967217 100644 (file)
@@ -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} )" )
index 4f3ac66f21503498b7089f65aeffc075559bba0b..3eadc50f93e6adcf357ee4753b563ce86f222ba4 100644 (file)
@@ -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