changeset 125:e11577711968

Build the new pypy2:lang/pypy2 using the new monorepo for PyPy. BUGS: Byte-compilation not yet implemented.
author Franz Glasner <fzglas.hg@dom66.de>
date Sat, 13 Jan 2024 20:40:33 +0100
parents 0696adff7664
children 1c224aaef1af
files lang/pypy2/Makefile lang/pypy2/distinfo lang/pypy2/distinfo.py27 lang/pypy2/pkg-plist
diffstat 4 files changed, 58 insertions(+), 173 deletions(-) [+]
line wrap: on
line diff
--- a/lang/pypy2/Makefile	Sat Jan 13 20:26:39 2024 +0100
+++ b/lang/pypy2/Makefile	Sat Jan 13 20:40:33 2024 +0100
@@ -1,14 +1,15 @@
-# Created by: David Naylor <naylor.b.david@gmail.com>
+# Created by: Franz Glasner <fzglas.hg@dom66.de>
+# based on the port created by: David Naylor <naylor.b.david@gmail.com>
 
-PORTNAME?=	pypy
-PORTREVISION?=	0
+PORTNAME=	pypy2
+DISTVERSION=	7.3.14
 CATEGORIES=	lang python
 MASTER_SITES=	https://downloads.python.org/pypy/
-DISTNAME?=	${PYTHON_IMPL_MINOR}-v${DISTVERSION}-src
+DISTNAME=	pypy${PYPY_PYTHON_IMPL_VER}-v${DISTVERSION}-src
 
-MAINTAINER=	python@FreeBSD.org
+MAINTAINER=	fzglas.hg@dom55.de
 COMMENT=	Fast, compliant implementation of the Python language
-WWW=		 http://pypy.org
+WWW=		https://www.pypy.org
 
 LICENSE=	MIT PSFL
 LICENSE_COMB=	multi
@@ -20,70 +21,59 @@
 ONLY_FOR_ARCHS?=	amd64 armv6 armv7 i386 powerpc64 powerpc64le
 ONLY_FOR_ARCHS_REASON?=	PyPy JIT only supported on these architectures
 
-LIB_DEPENDS+=	libexpat.so:textproc/expat2 \
+LIB_DEPENDS=	libexpat.so:textproc/expat2 \
 		libffi.so:devel/libffi
 TEST_DEPENDS=	${LOCALBASE}/${PYPY_DIR}/lib_pypy/_gdbm_cffi.${PYPY_CFFI_VER}.so:databases/pypy-gdbm \
 		${LOCALBASE}/${PYPY_DIR}/lib_pypy/_sqlite3_cffi.${PYPY_CFFI_VER}.so:databases/pypy-sqlite3 \
 		${LOCALBASE}/${PYPY_DIR}/lib_pypy/_tkinter/tklib_cffi.${PYPY_CFFI_VER}.so:x11-toolkits/pypy-tkinter
 
-USES=		gettext-runtime gmake shebangfix ssl tar:bzip2
+USES=		compiler:c11 gettext-runtime gmake shebangfix ssl tar:bzip2
 USE_LDCONFIG=	${PREFIX}/${PYPY_DIR}/bin
 
+OPTIONS_DEFINE=	BYTECOMPILE
+
+OPTIONS_DEFAULT=	BYTECOMPILE PYTHON
+
 OPTIONS_SINGLE=	TRANS
-OPTIONS_SINGLE_TRANS=	PYTHON
+OPTIONS_SINGLE_TRANS=	PYTHON PYPY PYPY_MINMEM
+
+BYTECOMPILE_DESC=	Enable to build byte-compiled Python files
+TRANS_DESC=	Translation method
 PYTHON_DESC=	Use Python-2.7 to translate (slowest)
 PYPY_DESC=	Use PyPy to translate (fastest, highest memory usage)
 PYPY_MINMEM_DESC=	Use PyPy to translate (lowest memory usage)
-TRANS_DESC=	Translation method
+
+PYTHON_BUILD_DEPENDS=	${PYTHON_PKGNAMEPREFIX}pycparser>=2.10:devel/py-pycparser@${PY_FLAVOR}
+PYTHON_USES=	python:2.7,build
+PYPY_BUILD_DEPENDS=	pypy2:lang/pypy2
+PYPY_VARS=	PYTHON_CMD=${LOCALBASE}/bin/pypy
+PYPY_MINMEM_BUILD_DEPENDS=	pypy2:lang/pypy2
+PYPY_MINMEM_VARS=	PYTHON_CMD="${SETENV} PYPY_GC_MAX_DELTA=200MB ${LOCALBASE}/bin/pypy --jit loop_longevity=300"
+
+PYPY_TAG=	pypy
+PYPY_DIR=	${PYPY_TAG}-${DISTVERSION:C|([0-9])\.([0-9]+).*|\1.\2|}
 
-# Only allow building with pypy if it wouldn't cause a dependency loop (pypy depending on itself)
-.if exists(${LOCALBASE}/bin/pypy) || ${PORTNAME} != pypy
-OPTIONS_SINGLE_TRANS+=	PYPY PYPY_MINMEM
-. if exists(${LOCALBASE}/bin/pypy)
-OPTIONS_DEFAULT=	PYPY_MINMEM
-. else
-OPTIONS_DEFAULT=	PYTHON
-. endif
-.else
-OPTIONS_SLAVE=	PYTHON
-.endif
+PYPY_PYTHON_IMPL_VER=	2.7
+PYPY_PYTHON_IMPL_VER_MAJOR=	${PYPY_PYTHON_IMPL_VER:C|([0-9]+)\.[0-9]+|\1|}
 
-LOCALBASE?=	/usr/local
+PYPY_CFFI_VER=	pypy-73
+PYPY_LDLIBRARY=	libpypy-c.so
+PYPY_EXECUTABLE=	pypy-c
+
+PYPY_ARGS=
+
+PLIST_SUB+=	PYPY_DIR=${PYPY_DIR} \
+		PYPY_CFFI_VER=${PYPY_CFFI_VER} \
+		PYPY_LDLIBRARY=${PYPY_LDLIBRARY}
 
 ALL_TARGET=	${PYPY_EXECUTABLE}
-BUILD_WRKSRC?=	${WRKDIR}/build/usession-${PORTNAME}-0/testing_1
+BUILD_WRKSRC=	${WRKDIR}/build/usession-${PYPY_TAG}-0/testing_1
 MAKE_ENV+=	PYPY_LOCALBASE=${LOCALBASE} LDSHARED="${CC} -shared"
-PACKAGE_ARGS?=	--without-gdbm --without-sqlite3 --without-_tkinter
+PACKAGE_ARGS=	--without-gdbm --without-sqlite3 --without-_tkinter
 LLD_UNSAFE=	yes
 
-python_OLD_CMD=	${LOCALBASE}/bin/python
-python_CMD=	${PREFIX}/bin/${PORTNAME}
-
-.if ${PORTNAME} != pypy
-PYPY_BUILD_DEPENDS=	pypy:lang/pypy
-PYPY_MINMEM_BUILD_DEPENDS=	pypy:lang/pypy
-.endif
-PYPY_VARS=	PYTHON_CMD=${LOCALBASE}/bin/pypy
-PYPY_MINMEM_VARS=	PYTHON_CMD="${SETENV} PYPY_GC_MAX_DELTA=200MB ${LOCALBASE}/bin/pypy --jit loop_longevity=300"
-PYTHON_BUILD_DEPENDS=	${PYTHON_PKGNAMEPREFIX}pycparser>=2.10:devel/py-pycparser@${PY_FLAVOR}
-PYTHON_USES=	python:2.7,build
-
-DESCR=		${.CURDIR}/pkg-descr
-PATCHDIR=	${.CURDIR}/files
-
-.include "bsd.pypy.mk"
-#.include <bsd.port.pre.mk>
-
-DISTINFO_FILE?=	${.CURDIR}/distinfo
-PLIST?=		${.CURDIR}/pkg-plist
-
-.if ${OPSYS} == FreeBSD && ${ARCH} != i386 && ${ARCH} != amd64
-PYPY_ARGS=	--withoutmod-_vmprof
-.else
-LIB_DEPENDS+=	libunwind.so:devel/libunwind
-.endif
-
-.if ${PORTNAME} == pypy
+# shebang configuration
+python_CMD=	${LOCALBASE}/bin/pypy${PYPY_PYTHON_IMPL_VER}
 SHEBANG_FILES=	lib-python/2.7/plat-mac/appletrunner.py \
 		lib-python/2.7/plat-mac/bundlebuilder.py \
 		lib-python/2.7/keyword.py \
@@ -119,107 +109,13 @@
 		lib-python/2.7/smtplib.py \
 		lib_pypy/_cffi_ssl/tools/make_ssl_data.py
 
+#.include "bsd.pypy.mk"
+.include <bsd.port.pre.mk>
+
+.if ${OPSYS} == FreeBSD && ${ARCH} != i386 && ${ARCH} != amd64
+PYPY_ARGS=	--withoutmod-_vmprof
 .else
-.  if ${PORT_OPTIONS:MFORPYIMPL39}
-SHEBANG_FILES=	\
-		lib-python/3/base64.py \
-		lib-python/3/cProfile.py \
-		lib-python/3/cgi.py \
-		lib-python/3/encodings/rot_13.py \
-		lib-python/3/keyword.py \
-		lib-python/3/idlelib/pyshell.py \
-		lib-python/3/lib2to3/pgen2/token.py \
-		lib-python/3/lib2to3/tests/data/different_encoding.py \
-		lib-python/3/lib2to3/tests/data/false_encoding.py \
-		lib-python/3/lib2to3/tests/pytree_idempotency.py \
-		lib-python/3/pdb.py \
-		lib-python/3/platform.py \
-		lib-python/3/profile.py \
-		lib-python/3/pydoc.py \
-		lib-python/3/quopri.py \
-		lib-python/3/smtpd.py \
-		lib-python/3/smtplib.py \
-		lib-python/3/symbol.py \
-		lib-python/3/tabnanny.py \
-		lib-python/3/tarfile.py \
-		lib-python/3/test/bisect_cmd.py \
-		lib-python/3/test/crashers/recursive_call.py \
-		lib-python/3/test/curses_tests.py \
-		lib-python/3/test/pystone.py \
-		lib-python/3/test/re_tests.py \
-		lib-python/3/test/regrtest.py \
-		lib-python/3/timeit.py \
-		lib-python/3/trace.py \
-		lib-python/3/turtledemo/bytedesign.py \
-		lib-python/3/turtledemo/clock.py \
-		lib-python/3/turtledemo/forest.py \
-		lib-python/3/turtledemo/fractalcurves.py \
-		lib-python/3/turtledemo/lindenmayer.py \
-		lib-python/3/turtledemo/minimal_hanoi.py \
-		lib-python/3/turtledemo/paint.py \
-		lib-python/3/turtledemo/peace.py \
-		lib-python/3/turtledemo/penrose.py \
-		lib-python/3/turtledemo/planet_and_moon.py \
-		lib-python/3/turtledemo/sorting_animate.py \
-		lib-python/3/turtledemo/tree.py \
-		lib-python/3/turtledemo/yinyang.py \
-		lib-python/3/turtledemo/__main__.py \
-		lib-python/3/uu.py \
-		lib-python/3/webbrowser.py \
-		lib_pypy/_cffi_ssl/tools/make_ssl_data.py \
-		lib-python/3/test/ziptestdata/header.sh \
-		lib-python/3/test/ziptestdata/exe_with_z64 \
-		lib-python/3/test/ziptestdata/exe_with_zip
-.  elif ${PORT_OPTIONS:MFORPYIMPL310}
-SHEBANG_FILES=	\
-		lib-python/3/base64.py \
-		lib-python/3/cProfile.py \
-		lib-python/3/cgi.py \
-		lib-python/3/encodings/rot_13.py \
-		lib-python/3/keyword.py \
-		lib-python/3/idlelib/pyshell.py \
-		lib-python/3/lib2to3/pgen2/token.py \
-		lib-python/3/lib2to3/tests/data/different_encoding.py \
-		lib-python/3/lib2to3/tests/data/false_encoding.py \
-		lib-python/3/lib2to3/tests/pytree_idempotency.py \
-		lib-python/3/pdb.py \
-		lib-python/3/platform.py \
-		lib-python/3/profile.py \
-		lib-python/3/pydoc.py \
-		lib-python/3/quopri.py \
-		lib-python/3/smtpd.py \
-		lib-python/3/smtplib.py \
-		lib-python/3/tabnanny.py \
-		lib-python/3/tarfile.py \
-		lib-python/3/test/bisect_cmd.py \
-		lib-python/3/test/crashers/recursive_call.py \
-		lib-python/3/test/curses_tests.py \
-		lib-python/3/test/pystone.py \
-		lib-python/3/test/re_tests.py \
-		lib-python/3/test/regrtest.py \
-		lib-python/3/timeit.py \
-		lib-python/3/trace.py \
-		lib-python/3/turtledemo/bytedesign.py \
-		lib-python/3/turtledemo/clock.py \
-		lib-python/3/turtledemo/forest.py \
-		lib-python/3/turtledemo/fractalcurves.py \
-		lib-python/3/turtledemo/lindenmayer.py \
-		lib-python/3/turtledemo/minimal_hanoi.py \
-		lib-python/3/turtledemo/paint.py \
-		lib-python/3/turtledemo/peace.py \
-		lib-python/3/turtledemo/penrose.py \
-		lib-python/3/turtledemo/planet_and_moon.py \
-		lib-python/3/turtledemo/sorting_animate.py \
-		lib-python/3/turtledemo/tree.py \
-		lib-python/3/turtledemo/yinyang.py \
-		lib-python/3/turtledemo/__main__.py \
-		lib-python/3/uu.py \
-		lib-python/3/webbrowser.py \
-		lib_pypy/_cffi_ssl/tools/make_ssl_data.py \
-		lib-python/3/test/ziptestdata/header.sh \
-		lib-python/3/test/ziptestdata/exe_with_z64 \
-		lib-python/3/test/ziptestdata/exe_with_zip
-.  endif
+LIB_DEPENDS+=	libunwind.so:devel/libunwind
 .endif
 
 pre-build:
@@ -227,7 +123,7 @@
 		${RM} -r ${WRKDIR}/build; \
 		${MKDIR} ${WRKDIR}/build; \
 		(cd ${WRKSRC}/pypy/goal; \
-			${SETENV} ${MAKE_ENV} TMPDIR=${WRKDIR}/build PYPY_USESSION_BASENAME=${PORTNAME} \
+			${SETENV} ${MAKE_ENV} TMPDIR=${WRKDIR}/build PYPY_USESSION_BASENAME=${PYPY_TAG} \
 			${PYTHON_CMD} ../../rpython/bin/rpython --source --opt=jit targetpypystandalone.py ${PYPY_ARGS}); \
 	fi
 
@@ -240,23 +136,10 @@
 			${PYTHON_CMD} ${WRKSRC}/pypy/tool/release/package.py --builddir ${WRKDIR}/build --archive-name ${PYPY_DIR} \
 				${PACKAGE_ARGS})
 	${EXTRACT_CMD} -C ${STAGEDIR}${PREFIX} -xf ${WRKDIR}/build/${PYPY_DIR}.tar.bz2
-	${LN} -fs ../${PYPY_DIR}/bin/${PORTNAME} ${STAGEDIR}${PREFIX}/bin/${PORTNAME}
-.if ${PORT_OPTIONS:MFORPYIMPL39} || ${PORT_OPTIONS:MFORPYIMPL310}
-	${FIND} ${STAGEDIR}${PREFIX}/${PYPY_DIR}/lib/${PYTHON_IMPL_MINOR} -name '*.so' | ${XARGS} ${STRIP_CMD}
-.else
+	${LN} -fs ../${PYPY_DIR}/bin/${PYPY_TAG} ${STAGEDIR}${PREFIX}/bin/${PYPY_TAG}
+	${LN} -fs ../${PYPY_DIR}/bin/${PYPY_TAG} ${STAGEDIR}${PREFIX}/bin/${PORTNAME}
+	${LN} -fs ../${PYPY_DIR}/bin/${PYPY_TAG} ${STAGEDIR}${PREFIX}/bin/${PYPY_TAG}${PYPY_PYTHON_IMPL_VER}
 	${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
@@ -283,7 +166,7 @@
 		-e 's/\(.*\/__pycache__\)\/$$/@dir \1/g' \
 		-e '/\/$$/d' \
 			${WRKDIR}/.plist-files-gen
-	${ECHO} bin/${PORTNAME} > ${WRKDIR}/pkg-plist
+	${ECHO} bin/${PYPY_TAG} > ${WRKDIR}/pkg-plist
 	${SORT} ${WRKDIR}/.plist-files-gen | ${GREP} -v '\.orig' >> ${WRKDIR}/pkg-plist
 	${CP} ${WRKDIR}/pkg-plist ${.CURDIR}/pkg-plist
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lang/pypy2/distinfo	Sat Jan 13 20:40:33 2024 +0100
@@ -0,0 +1,3 @@
+TIMESTAMP = 1704649912
+SHA256 (pypy2.7-v7.3.14-src.tar.bz2) = e096fe67ce2d8d4d5e7dceb84fe1ca854498f00766d31b27d32c8d8833131373
+SIZE (pypy2.7-v7.3.14-src.tar.bz2) = 19910947
--- a/lang/pypy2/distinfo.py27	Sat Jan 13 20:26:39 2024 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-TIMESTAMP = 1704649912
-SHA256 (pypy2.7-v7.3.14-src.tar.bz2) = e096fe67ce2d8d4d5e7dceb84fe1ca854498f00766d31b27d32c8d8833131373
-SIZE (pypy2.7-v7.3.14-src.tar.bz2) = 19910947
--- a/lang/pypy2/pkg-plist	Sat Jan 13 20:26:39 2024 +0100
+++ b/lang/pypy2/pkg-plist	Sat Jan 13 20:40:33 2024 +0100
@@ -1,4 +1,6 @@
 bin/pypy
+bin/pypy2
+bin/pypy2.7
 %%PYPY_DIR%%/LICENSE
 %%PYPY_DIR%%/README.rst
 %%PYPY_DIR%%/bin/%%PYPY_LDLIBRARY%%