diff --git a/Mk/Uses/python.mk b/Mk/Uses/python.mk index fa7c7b7b7084..43c51aaa9401 100644 --- a/Mk/Uses/python.mk +++ b/Mk/Uses/python.mk @@ -103,6 +103,9 @@ # distutils - Use distutils as do-configure, do-build and # do-install targets. implies flavors. # +# build - Use build/installer as do-build and +# do-install targets. implies flavors. +# # autoplist - Automatically generates the packaging list for a # port that uses distutils when defined. # requires: distutils @@ -281,7 +284,7 @@ _PYTHON_BASECMD= ${LOCALBASE}/bin/python _PYTHON_RELPORTDIR= lang/python # List all valid USE_PYTHON features here -_VALID_PYTHON_FEATURES= allflavors autoplist concurrent cython cython_run \ +_VALID_PYTHON_FEATURES= allflavors autoplist build concurrent cython cython_run \ distutils flavors noegginfo noflavors nose nose2 \ optsuffix py3kplist pytest pytest4 pythonprefix \ unittest unittest2 @@ -309,6 +312,12 @@ IGNORE= uses either USE_PYTHON=pytest or USE_PYTHON=pytest4, not both of them _PYTHON_FEATURE_FLAVORS= yes . endif +# build automatically generates flavors depending on the supported +# versions. +. if defined(_PYTHON_FEATURE_BUILD) +_PYTHON_FEATURE_FLAVORS= yes +. endif + . if defined(_PYTHON_FEATURE_NOFLAVORS) .undef _PYTHON_FEATURE_FLAVORS . endif @@ -595,6 +604,14 @@ RUN_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}setuptools>=63.1.0:devel/py-setuptools@${P . endif . endif +. if defined(_PYTHON_FEATURE_BUILD) +. if ${PYTHON_VER} == 2.7 +DEV_ERROR+= "USES=python:2.7 is incompatible with USE_PYTHON=build" +. endif +BUILD_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}build>0:devel/py-build@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}installer>0:devel/py-installer@${PY_FLAVOR} +. endif + # distutils support PYSETUP?= setup.py PYDISTUTILS_SETUP?= -c \ @@ -790,6 +807,23 @@ do-install: . endif . endif # defined(_PYTHON_FEATURE_DISTUTILS) +. if defined(_PYTHON_FEATURE_BUILD) +. if !target(do-configure) +do-configure: + @${DO_NADA} +. endif + +. if !target(do-build) +do-build: + @cd ${BUILD_WRKSRC} && ${SETENV} ${MAKE_ENV} ${PYTHON_CMD} -m build --wheel --no-isolation --outdir ${WRKDIR} +. endif + +. if !target(do-install) +do-install: + @cd ${INSTALL_WRKSRC} && ${SETENV} ${MAKE_ENV} ${PYTHON_CMD} -m installer ${WRKDIR}/*.whl --destdir ${STAGEDIR} +. endif +. endif # defined(_PYTHON_FEATURE_BUILD) + . if defined(_PYTHON_FEATURE_NOSE) . if !target(do-test) do-test: