summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichał Górny <mgorny@gentoo.org>2017-05-10 20:37:50 +0200
committerMichał Górny <mgorny@gentoo.org>2017-05-16 19:11:37 +0200
commit392ff44ddb98f0cb1eadfb35d089fc35fe732547 (patch)
tree8aa3ad18b3f284316a70df684ddeb25eb0509089 /eclass/python-utils-r1.eclass
parentpython-single-r1.eclass: python_gen_impl_dep, use _python_impl_matches() (diff)
downloadgentoo-392ff44ddb98f0cb1eadfb35d089fc35fe732547.tar.gz
gentoo-392ff44ddb98f0cb1eadfb35d089fc35fe732547.tar.bz2
gentoo-392ff44ddb98f0cb1eadfb35d089fc35fe732547.zip
python-utils-r1.eclass: Allow -2/-3 as impl-patterns for py2/py3
Allow two special values in the implementation patterns for _python_impl_matches(): -2 to indicate all Python 2-compatible implementations, and -3 to indicate all Python 3-compatible implementations. Both of those values are implemented using the python_is_python3 function. This is mostly meant to make it easier and more fool-proof to write dependencies on backports to Python 2 which in most cases apply to PyPy2 as well.
Diffstat (limited to 'eclass/python-utils-r1.eclass')
-rw-r--r--eclass/python-utils-r1.eclass14
1 files changed, 11 insertions, 3 deletions
diff --git a/eclass/python-utils-r1.eclass b/eclass/python-utils-r1.eclass
index a9ae22c6d154..1a9f6ed171de 100644
--- a/eclass/python-utils-r1.eclass
+++ b/eclass/python-utils-r1.eclass
@@ -156,8 +156,10 @@ _python_set_impls() {
# Check whether the specified <impl> matches at least one
# of the patterns following it. Return 0 if it does, 1 otherwise.
#
-# <impl> should be in PYTHON_COMPAT form. The patterns are fnmatch-style
-# patterns.
+# <impl> should be in PYTHON_COMPAT form. The patterns can be either:
+# a) fnmatch-style patterns, e.g. 'python2*', 'pypy'...
+# 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"
@@ -165,7 +167,13 @@ _python_impl_matches() {
shift
for pattern; do
- if [[ ${impl} == ${pattern} ]]; then
+ if [[ ${pattern} == -2 ]]; then
+ ! python_is_python3 "${impl}"
+ return
+ elif [[ ${pattern} == -3 ]]; then
+ python_is_python3 "${impl}"
+ return
+ elif [[ ${impl} == ${pattern} ]]; then
return 0
fi
done