git: 600312a9118b - main - Mk/Uses/python.mk: Add USE_PYTHON=build to support pyproject.toml based projects
Date: Sun, 21 Aug 2022 20:16:10 UTC
The branch main has been updated by yuri: URL: https://cgit.FreeBSD.org/ports/commit/?id=600312a9118bc7b9c5bb7decbefe706f9046507b commit 600312a9118bc7b9c5bb7decbefe706f9046507b Author: Yuri Victorovich <yuri@FreeBSD.org> AuthorDate: 2022-08-21 19:46:39 +0000 Commit: Yuri Victorovich <yuri@FreeBSD.org> CommitDate: 2022-08-21 20:16:06 +0000 Mk/Uses/python.mk: Add USE_PYTHON=build to support pyproject.toml based projects USE_PYTHON=build supports PEP-517 at the level of individual ports. Global support (making PEP-517 be used for all ports) is outside of the scope of this patch. PR: 255722 Approved by: python (maintainer's timeout; 14 days) Differential Revision: https://reviews.freebsd.org/D36061 --- Mk/Uses/python.mk | 48 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/Mk/Uses/python.mk b/Mk/Uses/python.mk index fa7c7b7b7084..492cfe055773 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,26 @@ 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 +. if defined(_PYTHON_FEATURE_DISTUTILS) +DEV_ERROR+= "USE_PYTHON=distutils is incompatible with USE_PYTHON=build" +. endif +. if defined(_PYTHON_FEATURE_AUTOPLIST) +DEV_ERROR+= "USE_PYTHON=autoplist is incompatible with USE_PYTHON=build" +. endif +. if defined(_PYTHON_FEATURE_PY3KPLIST) +DEV_ERROR+= "USE_PYTHON=py3kplist is incompatible with USE_PYTHON=build" +. endif +. if defined(_PYTHON_FEATURE_NOEGGINFO) +DEV_ERROR+= "USE_PYTHON=noegginfo 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 +819,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: