On Wed, 2020-04-29 at 22:22 -0700, Patrick McLean wrote:
> This adds PYTHON_RELAXED_VERSIONS that ebuilds can set before inheriting the
> python eclasses that will make the implementation dependencies be simple slot
> dependencies rather than >= dependencies. The purpose of this is for packages 
> in
> @system to use to avoid circular dependencies like in bug #720048
> 
> Bug: https://bugs.gentoo.org/720048
> Signed-off-by: Patrick McLean <chutz...@gentoo.org>
> ---
>  eclass/python-utils-r1.eclass | 56 ++++++++++++++++++++++++++---------
>  1 file changed, 42 insertions(+), 14 deletions(-)
> 
> diff --git a/eclass/python-utils-r1.eclass b/eclass/python-utils-r1.eclass
> index e85aefda792..e5781605c8e 100644
> --- a/eclass/python-utils-r1.eclass
> +++ b/eclass/python-utils-r1.eclass
> @@ -57,6 +57,17 @@ readonly _PYTHON_ALL_IMPLS
>  # which can involve revisions of this eclass that support a different
>  # set of Python implementations.
>  
> +# @ECLASS-VARIABLE: PYTHON_RELAXED_VERSIONS
> +# @INTERNAL
> +# @DESCRIPTION:
> +# Set to a non-empty value in order to make eclass dependencies on
> +# Python versions be simple slot dependencies rather than setting
> +# a minimum version.
> +#
> +# This is intended to be set in ebuilds that are part of @system, or
> +# are dependencies of Python implementations themselves to avoid
> +# circular dependencies with the Python interpreter.

Why more hack-variables?  I'll just revert the changes.

> +
>  # @FUNCTION: _python_impl_supported
>  # @USAGE: <impl>
>  # @INTERNAL
> @@ -376,20 +387,37 @@ _python_export() {
>                               ;;
>                       PYTHON_PKG_DEP)
>                               local d
> -                             case ${impl} in
> -                                     python2.7)
> -                                             
> PYTHON_PKG_DEP='>=dev-lang/python-2.7.17-r1:2.7';;
> -                                     python3.6)
> -                                             
> PYTHON_PKG_DEP=">=dev-lang/python-3.6.10:3.6";;
> -                                     python3.7)
> -                                             
> PYTHON_PKG_DEP=">=dev-lang/python-3.7.7-r1:3.7";;
> -                                     python3.8)
> -                                             
> PYTHON_PKG_DEP=">=dev-lang/python-3.8.2:3.8";;
> -                                     pypy3)
> -                                             
> PYTHON_PKG_DEP='>=dev-python/pypy3-7.3.0:0=';;
> -                                     *)
> -                                             die "Invalid implementation: 
> ${impl}"
> -                             esac
> +                             if [[ -z ${PYTHON_RELAXED_VERSIONS} ]]; then
> +                                     case ${impl} in
> +                                             python2.7)
> +                                                     
> PYTHON_PKG_DEP='>=dev-lang/python-2.7.17-r1:2.7';;
> +                                             python3.6)
> +                                                     
> PYTHON_PKG_DEP=">=dev-lang/python-3.6.10:3.6";;
> +                                             python3.7)
> +                                                     
> PYTHON_PKG_DEP=">=dev-lang/python-3.7.7-r1:3.7";;
> +                                             python3.8)
> +                                                     
> PYTHON_PKG_DEP=">=dev-lang/python-3.8.2:3.8";;
> +                                             pypy3)
> +                                                     
> PYTHON_PKG_DEP='>=dev-python/pypy3-7.3.0:0=';;
> +                                             *)
> +                                                     die "Invalid 
> implementation: ${impl}"
> +                                     esac
> +                             else
> +                                     case ${impl} in
> +                                             python2.7)
> +                                                     
> PYTHON_PKG_DEP='dev-lang/python:2.7';;
> +                                             python3.6)
> +                                                     
> PYTHON_PKG_DEP="dev-lang/python:3.6";;
> +                                             python3.7)
> +                                                     
> PYTHON_PKG_DEP="dev-lang/python:3.7";;
> +                                             python3.8)
> +                                                     
> PYTHON_PKG_DEP="dev-lang/python:3.8";;
> +                                             pypy3)
> +                                                     
> PYTHON_PKG_DEP='dev-python/pypy3:0=';;
> +                                             *)
> +                                                     die "Invalid 
> implementation: ${impl}"
> +                                     esac
> +                             fi
>  
>                               # use-dep
>                               if [[ ${PYTHON_REQ_USE} ]]; then

-- 
Best regards,
Michał Górny

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to