summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Mk/Uses/python.mk23
1 files changed, 17 insertions, 6 deletions
diff --git a/Mk/Uses/python.mk b/Mk/Uses/python.mk
index bffb94c62e04..d2b0462b974f 100644
--- a/Mk/Uses/python.mk
+++ b/Mk/Uses/python.mk
@@ -235,12 +235,16 @@
# interpreter without dots, e.g. 27, 38, ...
# Used for prefixes and suffixes.
#
+# PYTHON_BASESUFFIX - PYTHON_SUFFIX without the threaded ABI flag.
+#
# PYTHON_MAJOR_VER - The major release version of the chosen Python
# interpreter, e.g. 2, 3, ...
#
# PYTHON_VER - The major-minor release version of the chosen Python
# interpreter, e.g. 2.7, 3.9, ...
#
+# PYTHON_BASEVER - PYTHON_VER without the threaded ABI flag.
+#
# PYTHON_ABIVER - Additional ABI flags set by the chosen Python
# interpreter, e.g. md
#
@@ -284,7 +288,9 @@
# PYTHON_PLATFORM=${PYTHON_PLATFORM}
# PYTHON_SITELIBDIR=${PYTHONPREFIX_SITELIBDIR}
# PYTHON_SUFFIX=${PYTHON_SUFFIX}
+# PYTHON_BASESUFFIX=${PYTHON_BASESUFFIX}
# PYTHON_VER=${PYTHON_VER}
+# PYTHON_BASEVER=${PYTHON_BASEVER}
# PYTHON_VERSION=${PYTHON_VERSION}
#
# where PYTHON_INCLUDEDIR, PYTHON_LIBDIR and PYTHON_SITELIBDIR have their PREFIX
@@ -457,7 +463,7 @@ IGNORE= uses unknown USES=python arguments: ${_PYTHON_ARGS}
. endif
# Pattern to convert python versions (X.Y or X.YY) to comparable format X.YY
-_VC= C/^([1-9]\.)([0-9])$$/\10\2/
+_VC= C/^([1-9]\.)([0-9])$$/\10\2/:S/t$///
.undef _PYTHON_VERSION_NONSUPPORTED
. if !empty(_PYTHON_VERSION_MINIMUM) && (${_PYTHON_VERSION:${_VC}} < ${_PYTHON_VERSION_MINIMUM:${_VC}})
@@ -525,7 +531,7 @@ FLAVOR= ${FLAVORS:[1]}
. endif
. endif
-. if ${FLAVOR:Mpy[23][0-9]}${FLAVOR:Mpy[23][1-9][0-9]}
+. if ${FLAVOR:Mpy[23][0-9]}${FLAVOR:Mpy[23][1-9][0-9]}${FLAVOR:Mpy31[3-9]t}
_PYTHON_VERSION= ${FLAVOR:S/py//:C/(.)/\1./}
. endif
@@ -548,7 +554,9 @@ PYTHON_VERSION= python${_PYTHON_VERSION}
# Got the correct python version, set some publicly accessible variables
PYTHON_VER= ${_PYTHON_VERSION}
+PYTHON_BASEVER= ${PYTHON_VER:S/t$//}
PYTHON_SUFFIX= ${_PYTHON_VERSION:S/.//g}
+PYTHON_BASESUFFIX= ${PYTHON_SUFFIX:S/t$//}
PYTHON_MAJOR_VER= ${PYTHON_VER:R}
PYTHON_REL= # empty
PYTHON_ABIVER= # empty
@@ -556,12 +564,11 @@ PYTHON_PORTSDIR= ${_PYTHON_RELPORTDIR}${PYTHON_SUFFIX}
# Protect partial checkouts from Mk/Scripts/functions.sh:export_ports_env().
. if !defined(_PORTS_ENV_CHECK) || exists(${PORTSDIR}/${PYTHON_PORTSDIR})
-.include "${PORTSDIR}/${PYTHON_PORTSDIR}/Makefile.version"
+.include "${PORTSDIR}/${PYTHON_PORTSDIR:S/t$//}/Makefile.version"
. endif
# Create a 5 integer version string, prefixing 0 to the minor and patch
# tokens if it's a single character. Only use the first 3 tokens of
-# PORTVERSION to support pre-release versions (rc3, alpha4, etc) of
-# any Python port (lang/pythonXY)
+# DISTVERSION to stay consistent regardless of pre-release or ABI flags
PYTHON_REL= ${PYTHON_DISTVERSION:C/^([0-9]+\.[0-9]+\.[0-9]+).*/\1/:C/\.([0-9])$/.0\1/:C/\.([0-9]\.[0-9]+)/.0\1/:S/.//g}
# Might be overridden by calling ports
@@ -573,7 +580,7 @@ PYTHON_ABIVER!= ${PYTHON_CMD}-config --abiflags
. endif
. if ${PYTHON_REL} >= 30807
-PYTHON_EXT_SUFFIX= .cpython-${PYTHON_SUFFIX}
+PYTHON_EXT_SUFFIX= .cpython-${PYTHON_BASESUFFIX}
. else
PYTHON_EXT_SUFFIX= # empty
. endif
@@ -894,8 +901,10 @@ SUB_LIST+= PYTHON_INCLUDEDIR=${PYTHONPREFIX_INCLUDEDIR} \
PYTHON_PLATFORM=${PYTHON_PLATFORM} \
PYTHON_SITELIBDIR=${PYTHONPREFIX_SITELIBDIR} \
PYTHON_SUFFIX=${PYTHON_SUFFIX} \
+ PYTHON_BASESUFFIX=${PYTHON_BASESUFFIX} \
PYTHON_EXT_SUFFIX=${PYTHON_EXT_SUFFIX} \
PYTHON_VER=${PYTHON_VER} \
+ PYTHON_BASEVER=${PYTHON_BASEVER} \
PYTHON_VERSION=${PYTHON_VERSION}
# Substitutions for pkg-plist
@@ -906,8 +915,10 @@ PLIST_SUB+= PYTHON_INCLUDEDIR=${PYTHONPREFIX_INCLUDEDIR:S;${PREFIX}/;;} \
PYTHON_PLATFORM=${PYTHON_PLATFORM} \
PYTHON_SITELIBDIR=${PYTHONPREFIX_SITELIBDIR:S;${PREFIX}/;;} \
PYTHON_SUFFIX=${PYTHON_SUFFIX} \
+ PYTHON_BASESUFFIX=${PYTHON_BASESUFFIX} \
PYTHON_EXT_SUFFIX=${PYTHON_EXT_SUFFIX} \
PYTHON_VER=${PYTHON_VER} \
+ PYTHON_BASEVER=${PYTHON_BASEVER} \
PYTHON_VERSION=${PYTHON_VERSION}
. if ${PYTHON_MAJOR_VER} < 3
SUB_LIST+= PYTHON2="" PYTHON3="@comment "