Changeset View
Changeset View
Standalone View
Standalone View
Mk/Uses/python.mk
Show First 20 Lines • Show All 333 Lines • ▼ Show 20 Lines | |||||
_PYTHON_VERSION:= ${PYTHON_DEFAULT} | _PYTHON_VERSION:= ${PYTHON_DEFAULT} | ||||
.if empty(_PYTHON_ARGS) | .if empty(_PYTHON_ARGS) | ||||
_PYTHON_ARGS= 3.6+ | _PYTHON_ARGS= 3.6+ | ||||
.endif | .endif | ||||
# Validate Python version whether it meets the version restriction. | # Validate Python version whether it meets the version restriction. | ||||
_PYTHON_VERSION_CHECK:= ${_PYTHON_ARGS:C/^([1-9]\.[0-9])$/\1-\1/} | _PYTHON_VERSION_CHECK:= ${_PYTHON_ARGS:C/^([1-9]\.[1-9]?[0-9])$/\1-\1/} | ||||
_PYTHON_VERSION_MINIMUM_TMP:= ${_PYTHON_VERSION_CHECK:C/([1-9]\.[0-9])[-+].*/\1/} | _PYTHON_VERSION_MINIMUM_TMP:= ${_PYTHON_VERSION_CHECK:C/([1-9]\.[1-9]?[0-9])[-+].*/\1/} | ||||
_PYTHON_VERSION_MINIMUM:= ${_PYTHON_VERSION_MINIMUM_TMP:M[1-9].[0-9]} | _PYTHON_VERSION_MINIMUM:= ${_PYTHON_VERSION_MINIMUM_TMP:M[1-9].*[0-9]} | ||||
_PYTHON_VERSION_MAXIMUM_TMP:= ${_PYTHON_VERSION_CHECK:C/.*-([1-9]\.[0-9])/\1/} | _PYTHON_VERSION_MAXIMUM_TMP:= ${_PYTHON_VERSION_CHECK:C/.*-([1-9]\.[1-9]?[0-9])/\1/} | ||||
_PYTHON_VERSION_MAXIMUM:= ${_PYTHON_VERSION_MAXIMUM_TMP:M[1-9].[0-9]} | _PYTHON_VERSION_MAXIMUM:= ${_PYTHON_VERSION_MAXIMUM_TMP:M[1-9].*[0-9]} | ||||
# At this point we should have no argument left in ${_PYTHON_ARGS} | # At this point we should have no argument left in ${_PYTHON_ARGS} | ||||
# except a version spec | # except a version spec | ||||
_PYTHON_ARGS:= ${_PYTHON_ARGS:N[1-9].[0-9]-[1-9].[0-9]:N[1-9].[0-9]:N[1-9].[0-9]+:N-[1-9].[0-9]} | _V1= [1-9].[0-9] | ||||
_V2= [1-9].[1-9][0-9] | |||||
_PYTHON_ARGS:= ${_PYTHON_ARGS:N${_V1}-${_V1}:N${_V1}-${_V2}:N${_V2}-${_V2}:N${_V1}:N${_V2}:N${_V1}+:N${_V2}+:N-${_V1}:N-${_V2}} | |||||
.if !empty(_PYTHON_ARGS) | .if !empty(_PYTHON_ARGS) | ||||
IGNORE= uses unknown USES=python arguments: ${_PYTHON_ARGS} | IGNORE= uses unknown USES=python arguments: ${_PYTHON_ARGS} | ||||
.endif | .endif | ||||
# Pattern to convert python versions (X.Y or X.YY) to comparable format X.YY | |||||
_VC= C/^([1-9]\.)([0-9])$$/\10\2/ | |||||
.undef _PYTHON_VERSION_NONSUPPORTED | .undef _PYTHON_VERSION_NONSUPPORTED | ||||
.if !empty(_PYTHON_VERSION_MINIMUM) && (${_PYTHON_VERSION} < ${_PYTHON_VERSION_MINIMUM}) | .if !empty(_PYTHON_VERSION_MINIMUM) && (${_PYTHON_VERSION:${_VC}} < ${_PYTHON_VERSION_MINIMUM:${_VC}}) | ||||
_PYTHON_VERSION_NONSUPPORTED= ${_PYTHON_VERSION_MINIMUM} at least | _PYTHON_VERSION_NONSUPPORTED= ${_PYTHON_VERSION_MINIMUM} at least | ||||
.elif !empty(_PYTHON_VERSION_MAXIMUM) && (${_PYTHON_VERSION} > ${_PYTHON_VERSION_MAXIMUM}) | .elif !empty(_PYTHON_VERSION_MAXIMUM) && (${_PYTHON_VERSION:${_VC}} > ${_PYTHON_VERSION_MAXIMUM:${_VC}}) | ||||
_PYTHON_VERSION_NONSUPPORTED= ${_PYTHON_VERSION_MAXIMUM} at most | _PYTHON_VERSION_NONSUPPORTED= ${_PYTHON_VERSION_MAXIMUM} at most | ||||
.endif | .endif | ||||
# If we have an unsupported version of Python, try another. | # If we have an unsupported version of Python, try another. | ||||
.if defined(_PYTHON_VERSION_NONSUPPORTED) | .if defined(_PYTHON_VERSION_NONSUPPORTED) | ||||
.undef _PYTHON_VERSION | .undef _PYTHON_VERSION | ||||
.for ver in ${PYTHON2_DEFAULT} ${PYTHON3_DEFAULT} ${_PYTHON_VERSIONS} | .for ver in ${PYTHON2_DEFAULT} ${PYTHON3_DEFAULT} ${_PYTHON_VERSIONS} | ||||
__VER= ${ver} | __VER= ${ver} | ||||
.if !defined(_PYTHON_VERSION) && \ | .if !defined(_PYTHON_VERSION) && \ | ||||
!(!empty(_PYTHON_VERSION_MINIMUM) && ( \ | !(!empty(_PYTHON_VERSION_MINIMUM) && ( \ | ||||
${__VER} < ${_PYTHON_VERSION_MINIMUM})) && \ | ${__VER:${_VC}} < ${_PYTHON_VERSION_MINIMUM:${_VC}})) && \ | ||||
!(!empty(_PYTHON_VERSION_MAXIMUM) && ( \ | !(!empty(_PYTHON_VERSION_MAXIMUM) && ( \ | ||||
${__VER} > ${_PYTHON_VERSION_MAXIMUM})) | ${__VER:${_VC}} > ${_PYTHON_VERSION_MAXIMUM:${_VC}})) | ||||
_PYTHON_VERSION= ${ver} | _PYTHON_VERSION= ${ver} | ||||
.endif | .endif | ||||
.endfor | .endfor | ||||
.if !defined(_PYTHON_VERSION) | .if !defined(_PYTHON_VERSION) | ||||
IGNORE= needs an unsupported version of Python | IGNORE= needs an unsupported version of Python | ||||
.endif | .endif | ||||
.endif # defined(_PYTHON_VERSION_NONSUPPORTED) | .endif # defined(_PYTHON_VERSION_NONSUPPORTED) | ||||
# Automatically generates FLAVORS if empty | # Automatically generates FLAVORS if empty | ||||
.if empty(FLAVORS) && defined(_PYTHON_FEATURE_FLAVORS) | .if empty(FLAVORS) && defined(_PYTHON_FEATURE_FLAVORS) | ||||
. undef _VALID_PYTHON_VERSIONS | . undef _VALID_PYTHON_VERSIONS | ||||
. for ver in ${PYTHON_DEFAULT} ${PYTHON2_DEFAULT} ${PYTHON3_DEFAULT} ${_PYTHON_VERSIONS} | . for ver in ${PYTHON_DEFAULT} ${PYTHON2_DEFAULT} ${PYTHON3_DEFAULT} ${_PYTHON_VERSIONS} | ||||
__VER= ${ver} | __VER= ${ver} | ||||
. if !(!empty(_PYTHON_VERSION_MINIMUM) && ( \ | . if !(!empty(_PYTHON_VERSION_MINIMUM) && ( \ | ||||
${__VER} < ${_PYTHON_VERSION_MINIMUM})) && \ | ${__VER:${_VC}} < ${_PYTHON_VERSION_MINIMUM:${_VC}})) && \ | ||||
!(!empty(_PYTHON_VERSION_MAXIMUM) && ( \ | !(!empty(_PYTHON_VERSION_MAXIMUM) && ( \ | ||||
${__VER} > ${_PYTHON_VERSION_MAXIMUM})) | ${__VER:${_VC}} > ${_PYTHON_VERSION_MAXIMUM:${_VC}})) | ||||
. if empty(_VALID_PYTHON_VERSIONS:M${ver}) | . if empty(_VALID_PYTHON_VERSIONS:M${ver}) | ||||
_VALID_PYTHON_VERSIONS+= ${ver} | _VALID_PYTHON_VERSIONS+= ${ver} | ||||
. endif | . endif | ||||
. endif | . endif | ||||
. endfor | . endfor | ||||
# Get all possible flavors depending on version requirements | # Get all possible flavors depending on version requirements | ||||
. if defined(_VALID_PYTHON_VERSIONS) | . if defined(_VALID_PYTHON_VERSIONS) | ||||
_ALL_PYTHON_FLAVORS= ${_VALID_PYTHON_VERSIONS:S/.//:S/^/py/} | _ALL_PYTHON_FLAVORS= ${_VALID_PYTHON_VERSIONS:S/.//:S/^/py/} | ||||
Show All 16 Lines | |||||
. endif | . endif | ||||
. endfor | . endfor | ||||
. endif | . endif | ||||
. if !empty(FLAVORS) && empty(FLAVOR) | . if !empty(FLAVORS) && empty(FLAVOR) | ||||
FLAVOR= ${FLAVORS:[1]} | FLAVOR= ${FLAVORS:[1]} | ||||
. endif | . endif | ||||
.endif | .endif | ||||
.if ${FLAVOR:Mpy[23][0-9]} | .if ${FLAVOR:Mpy[23][0-9]*} | ||||
_PYTHON_VERSION= ${FLAVOR:S/py//:C/(.)/\1./} | _PYTHON_VERSION= ${FLAVOR:S/py//:C/(.)/\1./} | ||||
.endif | .endif | ||||
.if !empty(FLAVOR) && ${_PYTHON_VERSION} != ${PYTHON_DEFAULT} | .if !empty(FLAVOR) && ${_PYTHON_VERSION} != ${PYTHON_DEFAULT} | ||||
.if defined(_PYTHON_FEATURE_OPTSUFFIX) | .if defined(_PYTHON_FEATURE_OPTSUFFIX) | ||||
DEV_WARNING+= "USE_PYTHON=optsuffix is deprecated, consider migrating to using unconditional PKGNAMESUFFIX or PKGNAMEPREFIX" | DEV_WARNING+= "USE_PYTHON=optsuffix is deprecated, consider migrating to using unconditional PKGNAMESUFFIX or PKGNAMEPREFIX" | ||||
PKGNAMESUFFIX= ${PYTHON_PKGNAMESUFFIX} | PKGNAMESUFFIX= ${PYTHON_PKGNAMESUFFIX} | ||||
.endif | .endif | ||||
▲ Show 20 Lines • Show All 303 Lines • Show Last 20 Lines |