changeset 60:4a2bf3c9eb24

FIX: Apply byte-compilation in the "main" Makefile because of MAKE variable issues and allow configuration of byte-compilation in build options
author Franz Glasner <hg@dom66.de>
date Wed, 10 Jan 2024 17:57:02 +0100
parents e25be229d3b6
children e12dfbf0a674
files Makefile bsd.pypy.mk
diffstat 2 files changed, 29 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/Makefile	Wed Jan 10 15:18:16 2024 +0100
+++ b/Makefile	Wed Jan 10 17:57:02 2024 +0100
@@ -141,6 +141,17 @@
 .else
 	${FIND} ${STAGEDIR}${PREFIX}/${PYPY_DIR}/lib_pypy/ -name '*.so' | ${XARGS} ${STRIP_CMD}
 .endif
+.if ${PORT_OPTIONS:MFORPYIMPL39} || ${PORT_OPTIONS:MFORPYIMPL310}
+.if ${PORT_OPTIONS:MBYTECOMPILE}
+	@echo Byte-compile the Python standard library for optimization levels 0, 1 and 2 with invalidation mode ${COMPILEALL_INVALIDATIONMODE}
+	(cd ${STAGEDIR}${PREFIX}/${PYPY_DIR} && ${SETENV} LD_LIBRARY_PATH=${WRKSRC}/pypy/goal \
+		${WRKSRC}/pypy/goal/${PYPY_EXECUTABLE} -B -I -m compileall --invalidation-mode=${COMPILEALL_INVALIDATIONMODE} -q -x '/tests?/' -o 0 -o 1 -o 2 -d "${PREFIX}/${PYPY_DIR}/lib" lib)
+.else
+	@echo Distribution of byte-compiled standard library files is deactivated
+.endif
+.else
+	@echo Byte-compilation of standard library files is not yet supported
+.endif
 
 do-test:
 	# See https://bitbucket.org/pypy/buildbot/src/default/bot2/pypybuildbot/builds.py?at=default#builds.py-386
--- a/bsd.pypy.mk	Wed Jan 10 15:18:16 2024 +0100
+++ b/bsd.pypy.mk	Wed Jan 10 17:57:02 2024 +0100
@@ -29,7 +29,12 @@
 PLIST_SUB+=	PYTHON_IMPL_MINOR=${PYTHON_IMPL_MINOR} \
 		PY_VERSION_SHORT=${PY_VERSION_SHORT}
 
-OPTIONS_SINGLE+=	FORPYIMPL
+OPTIONS_DEFINE=	BYTECOMPILE
+OPTIONS_DEFAULT=	BYTECOMPILE
+
+BYTECOMPILE_DESC=	Enable to build byte-compiled Python files
+
+OPTIONS_SINGLE+=	FORPYIMPL BCSTYLE
 
 OPTIONS_SINGLE_FORPYIMPL=	FORPYIMPL37 FORPYIMPL38 FORPYIMPL39 FORPYIMPL310
 
@@ -39,8 +44,19 @@
 FORPYIMPL39_DESC=	Build for compat to Python 3.9
 FORPYIMPL310_DESC=	Build for compat to Python 3.10
 
+OPTIONS_SINGLE_BCSTYLE=	BCTIMESTAMP BCCHECKEDHASH BCUNCHECKEDHASH
+
+BCSTYLE_DESC=	PEP-552 .pyc-File Invalidation Modes
+BCTIMESTAMP_DESC=	Traditional timestamp based .pyc file invalidataion
+BCCHECKEDHASH_DESC=	Use checked hash based .pyc file invalidataion
+BCUNCHECKEDHASH_DESC=	Use unchecked hash based .pyc file invalidataion
+
 OPTIONS_SUB=		yes
-OPTIONS_DEFAULT+=	FORPYIMPL39
+OPTIONS_DEFAULT+=	FORPYIMPL39 BCUNCHECKEDHASH
+
+BCTIMESTAMP_VARS=	COMPILEALL_INVALIDATIONMODE=timestamp
+BCCHECKEDHASH_VARS=	COMPILEALL_INVALIDATIONMODE=checked-hash
+BCUNCHECKEDHASH_VARS=	COMPILEALL_INVALIDATIONMODE=unchecked-hash
 
 .endif