USE_PYTHON=pep517: package python bytecode

Compile and package python bytecode for python ports using pep517.
This can be revisited in the future with a trigger.

Approved by:	portmgr
This commit is contained in:
Antoine Brodin 2023-04-04 18:27:33 +00:00
parent 4cda17ab14
commit 378e09115c
3 changed files with 12 additions and 4 deletions

View file

@ -153,7 +153,7 @@
# default: <empty> # default: <empty>
# #
# PEP517_INSTALL_CMD - Command sequence for a PEP-517 install frontend that installs a wheel. # PEP517_INSTALL_CMD - Command sequence for a PEP-517 install frontend that installs a wheel.
# default: ${PYTHON_CMD} -m installer --destdir ${STAGEDIR} --no-compile-bytecode --prefix ${PREFIX} ${BUILD_WRKSRC}/dist/${PORTNAME:C|[-_]+|_|g}-${DISTVERSION}*.whl # default: ${PYTHON_CMD} -m installer --destdir ${STAGEDIR} --prefix ${PREFIX} ${BUILD_WRKSRC}/dist/${PORTNAME:C|[-_]+|_|g}-${DISTVERSION}*.whl
# #
# PEP517_INSTALL_DEPEND - Port needed to execute ${PEP517_INSTALL_CMD}. # PEP517_INSTALL_DEPEND - Port needed to execute ${PEP517_INSTALL_CMD}.
# default: ${PYTHON_PKGNAMEPREFIX}installer>=0:devel/py-installer@${PY_FLAVOR} # default: ${PYTHON_PKGNAMEPREFIX}installer>=0:devel/py-installer@${PY_FLAVOR}
@ -687,7 +687,7 @@ PEP517_BUILD_DEPEND?= ${PYTHON_PKGNAMEPREFIX}gpep517>=0:devel/py-gpep517@${PY_FL
PEP517_BUILD_CMD?= ${PYTHON_CMD} -m build --no-isolation --wheel ${PEP517_BUILD_CONFIG_SETTING} PEP517_BUILD_CMD?= ${PYTHON_CMD} -m build --no-isolation --wheel ${PEP517_BUILD_CONFIG_SETTING}
PEP517_BUILD_DEPEND?= ${PYTHON_PKGNAMEPREFIX}build>=0:devel/py-build@${PY_FLAVOR} PEP517_BUILD_DEPEND?= ${PYTHON_PKGNAMEPREFIX}build>=0:devel/py-build@${PY_FLAVOR}
. endif . endif
PEP517_INSTALL_CMD?= ${PYTHON_CMD} -m installer --destdir ${STAGEDIR} --no-compile-bytecode --prefix ${PREFIX} ${BUILD_WRKSRC}/dist/${PORTNAME:C|[-_]+|_|g}-${DISTVERSION}*.whl PEP517_INSTALL_CMD?= ${PYTHON_CMD} -m installer --destdir ${STAGEDIR} --prefix ${PREFIX} ${BUILD_WRKSRC}/dist/${PORTNAME:C|[-_]+|_|g}-${DISTVERSION}*.whl
PEP517_INSTALL_DEPEND?= ${PYTHON_PKGNAMEPREFIX}installer>=0:devel/py-installer@${PY_FLAVOR} PEP517_INSTALL_DEPEND?= ${PYTHON_PKGNAMEPREFIX}installer>=0:devel/py-installer@${PY_FLAVOR}
# nose support # nose support
@ -920,6 +920,7 @@ do-install:
-e 's|^${PYTHONPREFIX_SITELIBDIR}/../../../sbin/|sbin/|' \ -e 's|^${PYTHONPREFIX_SITELIBDIR}/../../../sbin/|sbin/|' \
-e 's|^${PYTHONPREFIX_SITELIBDIR}/../../../share/|share/|' \ -e 's|^${PYTHONPREFIX_SITELIBDIR}/../../../share/|share/|' \
${_PYTHONPKGLIST} ${_PYTHONPKGLIST}
@cd ${STAGEDIR}${PREFIX} && ${FIND} lib -name '*.pyc' >> ${_PYTHONPKGLIST}
. endif . endif
. endif # defined(_PYTHON_FEATURE_PEP517) . endif # defined(_PYTHON_FEATURE_PEP517)

View file

@ -25,4 +25,9 @@ PEP517_BUILD_DEPEND= # empty
PEP517_INSTALL_CMD= ${PYTHON_CMD} ${WRKSRC}/bootstrap_install.py --installdir ${STAGEDIR}${PYTHONPREFIX_SITELIBDIR} ${WRKSRC}/dist/${DISTNAME}*.whl PEP517_INSTALL_CMD= ${PYTHON_CMD} ${WRKSRC}/bootstrap_install.py --installdir ${STAGEDIR}${PYTHONPREFIX_SITELIBDIR} ${WRKSRC}/dist/${DISTNAME}*.whl
PEP517_INSTALL_DEPEND= # empty PEP517_INSTALL_DEPEND= # empty
post-install:
${PYTHON_CMD} -m compileall -d ${PYTHON_SITELIBDIR} ${STAGEDIR}${PYTHON_SITELIBDIR}
${PYTHON_CMD} -O -m compileall -d ${PYTHON_SITELIBDIR} ${STAGEDIR}${PYTHON_SITELIBDIR}
@cd ${STAGEDIR}${PREFIX} && ${FIND} lib -name '*.pyc' >> ${_PYTHONPKGLIST}
.include <bsd.port.mk> .include <bsd.port.mk>

View file

@ -32,7 +32,7 @@ USE_PYTHON= autoplist concurrent pep517 pytest
PEP517_BUILD_DEPEND= ${PYTHON_PKGNAMEPREFIX}hatch-vcs>=0.3:devel/py-hatch-vcs@${PY_FLAVOR} PEP517_BUILD_DEPEND= ${PYTHON_PKGNAMEPREFIX}hatch-vcs>=0.3:devel/py-hatch-vcs@${PY_FLAVOR}
PEP517_BUILD_CMD= ${PYTHON_CMD} -m hatchling build --target wheel PEP517_BUILD_CMD= ${PYTHON_CMD} -m hatchling build --target wheel
PEP517_INSTALL_DEPEND= ${PKGNAMEPREFIX}pip>=22.3.1:devel/py-pip@${PY_FLAVOR} PEP517_INSTALL_DEPEND= ${PKGNAMEPREFIX}pip>=22.3.1:devel/py-pip@${PY_FLAVOR}
PEP517_INSTALL_CMD= ${PYTHON_CMD} -m pip install --no-color --compile \ PEP517_INSTALL_CMD= ${PYTHON_CMD} -m pip install --no-color --no-compile \
--ignore-installed --no-deps --no-warn-script-location \ --ignore-installed --no-deps --no-warn-script-location \
--prefix ${PREFIX} --progress-bar off --root \ --prefix ${PREFIX} --progress-bar off --root \
${STAGEDIR} --root-user-action ignore --verbose \ ${STAGEDIR} --root-user-action ignore --verbose \
@ -79,7 +79,9 @@ post-patch:
${WRKSRC}/docs/conf.py ${WRKSRC}/docs/conf.py
post-install: post-install:
${PYTHON_CMD} ${PYTHON_LIBDIR}/compileall.py -d ${PYTHONPREFIX_SITELIBDIR} -f ${STAGEDIR}${PYTHONPREFIX_SITELIBDIR} ${PYTHON_CMD} -m compileall -d ${PYTHON_SITELIBDIR} ${STAGEDIR}${PYTHON_SITELIBDIR}
${PYTHON_CMD} -O -m compileall -d ${PYTHON_SITELIBDIR} ${STAGEDIR}${PYTHON_SITELIBDIR}
@cd ${STAGEDIR}${PREFIX} && ${FIND} lib -name '*.pyc' >> ${_PYTHONPKGLIST}
post-install-DOCS-on: post-install-DOCS-on:
${LOCALBASE}/bin/sphinx-build-${PYTHON_VER} -d ${WRKDIR} -b html -n ${WRKSRC}/docs ${STAGEDIR}${DOCSDIR} ${LOCALBASE}/bin/sphinx-build-${PYTHON_VER} -d ${WRKDIR} -b html -n ${WRKSRC}/docs ${STAGEDIR}${DOCSDIR}