aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuri Victorovich <yuri@FreeBSD.org>2022-08-21 19:46:39 +0000
committerYuri Victorovich <yuri@FreeBSD.org>2022-08-21 20:16:06 +0000
commit600312a9118bc7b9c5bb7decbefe706f9046507b (patch)
tree501d25c0a707386e724d65d2c2d319aaa998d667
parent26208a3103dbae8a8017c650ce9f4b62cf102bb4 (diff)
downloadports-600312a9118bc7b9c5bb7decbefe706f9046507b.tar.gz
ports-600312a9118bc7b9c5bb7decbefe706f9046507b.zip
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
-rw-r--r--Mk/Uses/python.mk48
1 files changed, 47 insertions, 1 deletions
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: