Lines 168-180
Link Here
|
168 |
# PYTHONBASE - The installation prefix of the chosen Python |
168 |
# PYTHONBASE - The installation prefix of the chosen Python |
169 |
# interpreter, e.g. /usr/local |
169 |
# interpreter, e.g. /usr/local |
170 |
# |
170 |
# |
171 |
# PYTHON_PORTVERSION |
171 |
# PYTHON_DISTVERSION |
172 |
# - Version number suitable for ${PORTVERSION}. |
172 |
# - Version number suitable for ${DISTVERSION}. |
173 |
# |
173 |
# |
174 |
# PYTHON_PORTSDIR - The port directory of the chosen Python interpreter |
174 |
# PYTHON_PORTSDIR - The port directory of the chosen Python interpreter |
175 |
# |
175 |
# |
176 |
# PYTHON_REL - The release number of the chosen Python interpreter |
176 |
# PYTHON_REL - The release number of the chosen Python interpreter |
177 |
# without dots, e.g. 2706, 3401, ... |
177 |
# without dots, e.g. 20706, 30401, ... |
178 |
# |
178 |
# |
179 |
# PYTHON_SUFFIX - The major-minor release number of the chosen Python |
179 |
# PYTHON_SUFFIX - The major-minor release number of the chosen Python |
180 |
# interpreter without dots, e.g. 27, 36, ... |
180 |
# interpreter without dots, e.g. 27, 36, ... |
Lines 337-359
_PYTHON_ARGS= 3.6+
Link Here
|
337 |
.endif |
337 |
.endif |
338 |
|
338 |
|
339 |
# Validate Python version whether it meets the version restriction. |
339 |
# Validate Python version whether it meets the version restriction. |
340 |
_PYTHON_VERSION_CHECK:= ${_PYTHON_ARGS:C/^([1-9]\.[0-9])$/\1-\1/} |
340 |
_PYTHON_VERSION_CHECK:= ${_PYTHON_ARGS:C/^([1-9]\.[1-9]?[0-9])$/\1-\1/} |
341 |
_PYTHON_VERSION_MINIMUM_TMP:= ${_PYTHON_VERSION_CHECK:C/([1-9]\.[0-9])[-+].*/\1/} |
341 |
_PYTHON_VERSION_MINIMUM_TMP:= ${_PYTHON_VERSION_CHECK:C/([1-9]\.[1-9]?[0-9])[-+].*/\1/} |
342 |
_PYTHON_VERSION_MINIMUM:= ${_PYTHON_VERSION_MINIMUM_TMP:M[1-9].[0-9]} |
342 |
_PYTHON_VERSION_MINIMUM:= ${_PYTHON_VERSION_MINIMUM_TMP:M[1-9].[0-9]}${_PYTHON_VERSION_MINIMUM_TMP:M[1-9].[1-9][0-9]} |
343 |
_PYTHON_VERSION_MAXIMUM_TMP:= ${_PYTHON_VERSION_CHECK:C/.*-([1-9]\.[0-9])/\1/} |
343 |
_PYTHON_VERSION_MAXIMUM_TMP:= ${_PYTHON_VERSION_CHECK:C/.*-([1-9]\.[1-9]?[0-9])/\1/} |
344 |
_PYTHON_VERSION_MAXIMUM:= ${_PYTHON_VERSION_MAXIMUM_TMP:M[1-9].[0-9]} |
344 |
_PYTHON_VERSION_MAXIMUM:= ${_PYTHON_VERSION_MAXIMUM_TMP:M[1-9].[0-9]}${_PYTHON_VERSION_MAXIMUM_TMP:M[1-9].[1-9][0-9]} |
345 |
|
345 |
|
346 |
# At this point we should have no argument left in ${_PYTHON_ARGS} |
346 |
# At this point we should have no argument left in ${_PYTHON_ARGS} |
347 |
# except a version spec |
347 |
# except a version spec |
348 |
_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]} |
348 |
_V1= [1-9].[0-9] |
|
|
349 |
_V2= [1-9].[1-9][0-9] |
350 |
_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}} |
349 |
.if !empty(_PYTHON_ARGS) |
351 |
.if !empty(_PYTHON_ARGS) |
350 |
IGNORE= uses unknown USES=python arguments: ${_PYTHON_ARGS} |
352 |
IGNORE= uses unknown USES=python arguments: ${_PYTHON_ARGS} |
351 |
.endif |
353 |
.endif |
352 |
|
354 |
|
|
|
355 |
# Pattern to convert python versions (X.Y or X.YY) to comparable format X.YY |
356 |
_VC= C/^([1-9]\.)([0-9])$$/\10\2/ |
357 |
|
353 |
.undef _PYTHON_VERSION_NONSUPPORTED |
358 |
.undef _PYTHON_VERSION_NONSUPPORTED |
354 |
.if !empty(_PYTHON_VERSION_MINIMUM) && (${_PYTHON_VERSION} < ${_PYTHON_VERSION_MINIMUM}) |
359 |
.if !empty(_PYTHON_VERSION_MINIMUM) && (${_PYTHON_VERSION:${_VC}} < ${_PYTHON_VERSION_MINIMUM:${_VC}}) |
355 |
_PYTHON_VERSION_NONSUPPORTED= ${_PYTHON_VERSION_MINIMUM} at least |
360 |
_PYTHON_VERSION_NONSUPPORTED= ${_PYTHON_VERSION_MINIMUM} at least |
356 |
.elif !empty(_PYTHON_VERSION_MAXIMUM) && (${_PYTHON_VERSION} > ${_PYTHON_VERSION_MAXIMUM}) |
361 |
.elif !empty(_PYTHON_VERSION_MAXIMUM) && (${_PYTHON_VERSION:${_VC}} > ${_PYTHON_VERSION_MAXIMUM:${_VC}}) |
357 |
_PYTHON_VERSION_NONSUPPORTED= ${_PYTHON_VERSION_MAXIMUM} at most |
362 |
_PYTHON_VERSION_NONSUPPORTED= ${_PYTHON_VERSION_MAXIMUM} at most |
358 |
.endif |
363 |
.endif |
359 |
|
364 |
|
Lines 364-372
_PYTHON_VERSION_NONSUPPORTED= ${_PYTHON_VERSION_MAXIMUM} at most
Link Here
|
364 |
__VER= ${ver} |
369 |
__VER= ${ver} |
365 |
.if !defined(_PYTHON_VERSION) && \ |
370 |
.if !defined(_PYTHON_VERSION) && \ |
366 |
!(!empty(_PYTHON_VERSION_MINIMUM) && ( \ |
371 |
!(!empty(_PYTHON_VERSION_MINIMUM) && ( \ |
367 |
${__VER} < ${_PYTHON_VERSION_MINIMUM})) && \ |
372 |
${__VER:${_VC}} < ${_PYTHON_VERSION_MINIMUM:${_VC}})) && \ |
368 |
!(!empty(_PYTHON_VERSION_MAXIMUM) && ( \ |
373 |
!(!empty(_PYTHON_VERSION_MAXIMUM) && ( \ |
369 |
${__VER} > ${_PYTHON_VERSION_MAXIMUM})) |
374 |
${__VER:${_VC}} > ${_PYTHON_VERSION_MAXIMUM:${_VC}})) |
370 |
_PYTHON_VERSION= ${ver} |
375 |
_PYTHON_VERSION= ${ver} |
371 |
.endif |
376 |
.endif |
372 |
.endfor |
377 |
.endfor |
Lines 381-389
IGNORE= needs an unsupported version of Python
Link Here
|
381 |
. for ver in ${PYTHON_DEFAULT} ${PYTHON2_DEFAULT} ${PYTHON3_DEFAULT} ${_PYTHON_VERSIONS} |
386 |
. for ver in ${PYTHON_DEFAULT} ${PYTHON2_DEFAULT} ${PYTHON3_DEFAULT} ${_PYTHON_VERSIONS} |
382 |
__VER= ${ver} |
387 |
__VER= ${ver} |
383 |
. if !(!empty(_PYTHON_VERSION_MINIMUM) && ( \ |
388 |
. if !(!empty(_PYTHON_VERSION_MINIMUM) && ( \ |
384 |
${__VER} < ${_PYTHON_VERSION_MINIMUM})) && \ |
389 |
${__VER:${_VC}} < ${_PYTHON_VERSION_MINIMUM:${_VC}})) && \ |
385 |
!(!empty(_PYTHON_VERSION_MAXIMUM) && ( \ |
390 |
!(!empty(_PYTHON_VERSION_MAXIMUM) && ( \ |
386 |
${__VER} > ${_PYTHON_VERSION_MAXIMUM})) |
391 |
${__VER:${_VC}} > ${_PYTHON_VERSION_MAXIMUM:${_VC}})) |
387 |
. if empty(_VALID_PYTHON_VERSIONS:M${ver}) |
392 |
. if empty(_VALID_PYTHON_VERSIONS:M${ver}) |
388 |
_VALID_PYTHON_VERSIONS+= ${ver} |
393 |
_VALID_PYTHON_VERSIONS+= ${ver} |
389 |
. endif |
394 |
. endif |
Lines 416-422
FLAVOR= ${FLAVORS:[1]}
Link Here
|
416 |
. endif |
421 |
. endif |
417 |
.endif |
422 |
.endif |
418 |
|
423 |
|
419 |
.if ${FLAVOR:Mpy[23][0-9]} |
424 |
.if ${FLAVOR:Mpy[23][0-9]}${FLAVOR:Mpy[23][1-9][0-9]} |
420 |
_PYTHON_VERSION= ${FLAVOR:S/py//:C/(.)/\1./} |
425 |
_PYTHON_VERSION= ${FLAVOR:S/py//:C/(.)/\1./} |
421 |
.endif |
426 |
.endif |
422 |
|
427 |
|
Lines 449-472
PYTHON_PORTSDIR= ${_PYTHON_RELPORTDIR}${PYTHON_SUFFIX}
Link Here
|
449 |
.if !defined(_PORTS_ENV_CHECK) || exists(${PORTSDIR}/${PYTHON_PORTSDIR}) |
454 |
.if !defined(_PORTS_ENV_CHECK) || exists(${PORTSDIR}/${PYTHON_PORTSDIR}) |
450 |
.include "${PORTSDIR}/${PYTHON_PORTSDIR}/Makefile.version" |
455 |
.include "${PORTSDIR}/${PYTHON_PORTSDIR}/Makefile.version" |
451 |
.endif |
456 |
.endif |
452 |
# Create a 4 integer version string, prefixing 0 to the last token if |
457 |
# Create a 5 integer version string, prefixing 0 to the minor and patch |
453 |
# it's a single character. Only use the the first 3 tokens of |
458 |
# tokens if it's a single character. Only use the the first 3 tokens of |
454 |
# PORTVERSION to support pre-release versions (rc3, alpha4, etc) of |
459 |
# PORTVERSION to support pre-release versions (rc3, alpha4, etc) of |
455 |
# any Python port (lang/pythonXY) |
460 |
# any Python port (lang/pythonXY) |
456 |
PYTHON_REL= ${PYTHON_PORTVERSION:C/^([0-9]+\.[0-9]+\.[0-9]+).*/\1/:C/\.([0-9]+)$/.0\1/:C/\.0?([0-9][0-9])$/.\1/:S/.//g} |
461 |
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} |
457 |
|
462 |
|
458 |
# Might be overridden by calling ports |
463 |
# Might be overridden by calling ports |
459 |
PYTHON_CMD?= ${_PYTHON_BASECMD}${_PYTHON_VERSION} |
464 |
PYTHON_CMD?= ${_PYTHON_BASECMD}${_PYTHON_VERSION} |
460 |
.if ${PYTHON_VER} != 2.7 |
465 |
.if ${PYTHON_VER} != 2.7 |
461 |
.if exists(${PYTHON_CMD}-config) |
466 |
.if exists(${PYTHON_CMD}-config) |
462 |
PYTHON_ABIVER!= ${PYTHON_CMD}-config --abiflags |
467 |
PYTHON_ABIVER!= ${PYTHON_CMD}-config --abiflags |
463 |
.elif ${PYTHON_REL} < 3800 |
468 |
.elif ${PYTHON_REL} < 30800 |
464 |
# Default ABI flags for lang/python3[67] ports |
469 |
# Default ABI flags for lang/python3[67] ports |
465 |
PYTHON_ABIVER= m |
470 |
PYTHON_ABIVER= m |
466 |
.endif |
471 |
.endif |
467 |
.endif |
472 |
.endif |
468 |
|
473 |
|
469 |
.if ${PYTHON_REL} >= 3807 |
474 |
.if ${PYTHON_REL} >= 30807 |
470 |
PYTHON_EXT_SUFFIX= .cpython-${PYTHON_SUFFIX} |
475 |
PYTHON_EXT_SUFFIX= .cpython-${PYTHON_SUFFIX} |
471 |
.else |
476 |
.else |
472 |
PYTHON_EXT_SUFFIX= # empty |
477 |
PYTHON_EXT_SUFFIX= # empty |
Lines 607-613
add-plist-pymod:
Link Here
|
607 |
${_PYTHONPKGLIST} | ${SORT} >> ${TMPPLIST} |
612 |
${_PYTHONPKGLIST} | ${SORT} >> ${TMPPLIST} |
608 |
|
613 |
|
609 |
.else |
614 |
.else |
610 |
.if ${PYTHON_REL} >= 3200 && defined(_PYTHON_FEATURE_PY3KPLIST) |
615 |
.if ${PYTHON_REL} >= 30200 && defined(_PYTHON_FEATURE_PY3KPLIST) |
611 |
# When Python version is 3.2+ we rewrite all the filenames |
616 |
# When Python version is 3.2+ we rewrite all the filenames |
612 |
# of TMPPLIST that end with .py[co], so that they conform |
617 |
# of TMPPLIST that end with .py[co], so that they conform |
613 |
# to PEP 3147 (see https://www.python.org/dev/peps/pep-3147/) |
618 |
# to PEP 3147 (see https://www.python.org/dev/peps/pep-3147/) |
Lines 623-629
add-plist-python:
Link Here
|
623 |
pc="__pycache__" mt="$$(${PYMAGICTAG})" pyo="opt-1.pyc" \ |
628 |
pc="__pycache__" mt="$$(${PYMAGICTAG})" pyo="opt-1.pyc" \ |
624 |
${TMPPLIST} > ${TMPPLIST}.pyc_tmp |
629 |
${TMPPLIST} > ${TMPPLIST}.pyc_tmp |
625 |
@${MV} ${TMPPLIST}.pyc_tmp ${TMPPLIST} |
630 |
@${MV} ${TMPPLIST}.pyc_tmp ${TMPPLIST} |
626 |
.endif # ${PYTHON_REL} >= 3200 && defined(_PYTHON_FEATURE_PY3KPLIST) |
631 |
.endif # ${PYTHON_REL} >= 30200 && defined(_PYTHON_FEATURE_PY3KPLIST) |
627 |
.endif # defined(_PYTHON_FEATURE_AUTOPLIST) && defined(_PYTHON_FEATURE_DISTUTILS) |
632 |
.endif # defined(_PYTHON_FEATURE_AUTOPLIST) && defined(_PYTHON_FEATURE_DISTUTILS) |
628 |
|
633 |
|
629 |
# Fix for programs that build python from a GNU auto* environment |
634 |
# Fix for programs that build python from a GNU auto* environment |
Lines 638-644
PYGAME= ${PYTHON_PKGNAMEPREFIX}game>0:devel/py-game@${PY_FLAVOR}
Link Here
|
638 |
PYNUMPY= ${PYTHON_PKGNAMEPREFIX}numpy>=1.16,1<1.20,1:math/py-numpy@${PY_FLAVOR} |
643 |
PYNUMPY= ${PYTHON_PKGNAMEPREFIX}numpy>=1.16,1<1.20,1:math/py-numpy@${PY_FLAVOR} |
639 |
|
644 |
|
640 |
# Common Python modules that can be needed but only for some versions of Python. |
645 |
# Common Python modules that can be needed but only for some versions of Python. |
641 |
.if ${PYTHON_REL} < 3500 |
646 |
.if ${PYTHON_REL} < 30500 |
642 |
PY_PYGMENTS= ${PYTHON_PKGNAMEPREFIX}pygments-25>=2.5.1<3:textproc/py-pygments-25@${PY_FLAVOR} |
647 |
PY_PYGMENTS= ${PYTHON_PKGNAMEPREFIX}pygments-25>=2.5.1<3:textproc/py-pygments-25@${PY_FLAVOR} |
643 |
.else |
648 |
.else |
644 |
PY_PILLOW= ${PYTHON_PKGNAMEPREFIX}pillow>=7.0.0:graphics/py-pillow@${PY_FLAVOR} |
649 |
PY_PILLOW= ${PYTHON_PKGNAMEPREFIX}pillow>=7.0.0:graphics/py-pillow@${PY_FLAVOR} |
Lines 678-684
PLIST_SUB+= PYTHON_INCLUDEDIR=${PYTHONPREFIX_INCLUDEDIR:S;${PREFIX}/;;} \
Link Here
|
678 |
PYTHON_EXT_SUFFIX=${PYTHON_EXT_SUFFIX} \ |
683 |
PYTHON_EXT_SUFFIX=${PYTHON_EXT_SUFFIX} \ |
679 |
PYTHON_VER=${PYTHON_VER} \ |
684 |
PYTHON_VER=${PYTHON_VER} \ |
680 |
PYTHON_VERSION=${PYTHON_VERSION} |
685 |
PYTHON_VERSION=${PYTHON_VERSION} |
681 |
.if ${PYTHON_REL} < 3000 |
686 |
.if ${PYTHON_REL} < 30000 |
682 |
PLIST_SUB+= PYTHON2="" PYTHON3="@comment " |
687 |
PLIST_SUB+= PYTHON2="" PYTHON3="@comment " |
683 |
.else |
688 |
.else |
684 |
PLIST_SUB+= PYTHON2="@comment " PYTHON3="" |
689 |
PLIST_SUB+= PYTHON2="@comment " PYTHON3="" |