comparison lang/pypy2/Makefile @ 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 b907e948fed9
children 1c224aaef1af
comparison
equal deleted inserted replaced
124:0696adff7664 125:e11577711968
1 # Created by: David Naylor <naylor.b.david@gmail.com> 1 # Created by: Franz Glasner <fzglas.hg@dom66.de>
2 # based on the port created by: David Naylor <naylor.b.david@gmail.com>
2 3
3 PORTNAME?= pypy 4 PORTNAME= pypy2
4 PORTREVISION?= 0 5 DISTVERSION= 7.3.14
5 CATEGORIES= lang python 6 CATEGORIES= lang python
6 MASTER_SITES= https://downloads.python.org/pypy/ 7 MASTER_SITES= https://downloads.python.org/pypy/
7 DISTNAME?= ${PYTHON_IMPL_MINOR}-v${DISTVERSION}-src 8 DISTNAME= pypy${PYPY_PYTHON_IMPL_VER}-v${DISTVERSION}-src
8 9
9 MAINTAINER= python@FreeBSD.org 10 MAINTAINER= fzglas.hg@dom55.de
10 COMMENT= Fast, compliant implementation of the Python language 11 COMMENT= Fast, compliant implementation of the Python language
11 WWW= http://pypy.org 12 WWW= https://www.pypy.org
12 13
13 LICENSE= MIT PSFL 14 LICENSE= MIT PSFL
14 LICENSE_COMB= multi 15 LICENSE_COMB= multi
15 LICENSE_FILE_MIT= ${WRKSRC}/LICENSE 16 LICENSE_FILE_MIT= ${WRKSRC}/LICENSE
16 17
18 BROKEN_armv7= fails to package: pypy_objspace_std.c: Crash in JIT! 19 BROKEN_armv7= fails to package: pypy_objspace_std.c: Crash in JIT!
19 BROKEN_powerpc64= fails to compile: platcheck_109.c: fatal error: linux/auxvec.h: No such file or directory 20 BROKEN_powerpc64= fails to compile: platcheck_109.c: fatal error: linux/auxvec.h: No such file or directory
20 ONLY_FOR_ARCHS?= amd64 armv6 armv7 i386 powerpc64 powerpc64le 21 ONLY_FOR_ARCHS?= amd64 armv6 armv7 i386 powerpc64 powerpc64le
21 ONLY_FOR_ARCHS_REASON?= PyPy JIT only supported on these architectures 22 ONLY_FOR_ARCHS_REASON?= PyPy JIT only supported on these architectures
22 23
23 LIB_DEPENDS+= libexpat.so:textproc/expat2 \ 24 LIB_DEPENDS= libexpat.so:textproc/expat2 \
24 libffi.so:devel/libffi 25 libffi.so:devel/libffi
25 TEST_DEPENDS= ${LOCALBASE}/${PYPY_DIR}/lib_pypy/_gdbm_cffi.${PYPY_CFFI_VER}.so:databases/pypy-gdbm \ 26 TEST_DEPENDS= ${LOCALBASE}/${PYPY_DIR}/lib_pypy/_gdbm_cffi.${PYPY_CFFI_VER}.so:databases/pypy-gdbm \
26 ${LOCALBASE}/${PYPY_DIR}/lib_pypy/_sqlite3_cffi.${PYPY_CFFI_VER}.so:databases/pypy-sqlite3 \ 27 ${LOCALBASE}/${PYPY_DIR}/lib_pypy/_sqlite3_cffi.${PYPY_CFFI_VER}.so:databases/pypy-sqlite3 \
27 ${LOCALBASE}/${PYPY_DIR}/lib_pypy/_tkinter/tklib_cffi.${PYPY_CFFI_VER}.so:x11-toolkits/pypy-tkinter 28 ${LOCALBASE}/${PYPY_DIR}/lib_pypy/_tkinter/tklib_cffi.${PYPY_CFFI_VER}.so:x11-toolkits/pypy-tkinter
28 29
29 USES= gettext-runtime gmake shebangfix ssl tar:bzip2 30 USES= compiler:c11 gettext-runtime gmake shebangfix ssl tar:bzip2
30 USE_LDCONFIG= ${PREFIX}/${PYPY_DIR}/bin 31 USE_LDCONFIG= ${PREFIX}/${PYPY_DIR}/bin
31 32
33 OPTIONS_DEFINE= BYTECOMPILE
34
35 OPTIONS_DEFAULT= BYTECOMPILE PYTHON
36
32 OPTIONS_SINGLE= TRANS 37 OPTIONS_SINGLE= TRANS
33 OPTIONS_SINGLE_TRANS= PYTHON 38 OPTIONS_SINGLE_TRANS= PYTHON PYPY PYPY_MINMEM
39
40 BYTECOMPILE_DESC= Enable to build byte-compiled Python files
41 TRANS_DESC= Translation method
34 PYTHON_DESC= Use Python-2.7 to translate (slowest) 42 PYTHON_DESC= Use Python-2.7 to translate (slowest)
35 PYPY_DESC= Use PyPy to translate (fastest, highest memory usage) 43 PYPY_DESC= Use PyPy to translate (fastest, highest memory usage)
36 PYPY_MINMEM_DESC= Use PyPy to translate (lowest memory usage) 44 PYPY_MINMEM_DESC= Use PyPy to translate (lowest memory usage)
37 TRANS_DESC= Translation method
38 45
39 # Only allow building with pypy if it wouldn't cause a dependency loop (pypy depending on itself) 46 PYTHON_BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}pycparser>=2.10:devel/py-pycparser@${PY_FLAVOR}
40 .if exists(${LOCALBASE}/bin/pypy) || ${PORTNAME} != pypy 47 PYTHON_USES= python:2.7,build
41 OPTIONS_SINGLE_TRANS+= PYPY PYPY_MINMEM 48 PYPY_BUILD_DEPENDS= pypy2:lang/pypy2
42 . if exists(${LOCALBASE}/bin/pypy) 49 PYPY_VARS= PYTHON_CMD=${LOCALBASE}/bin/pypy
43 OPTIONS_DEFAULT= PYPY_MINMEM 50 PYPY_MINMEM_BUILD_DEPENDS= pypy2:lang/pypy2
44 . else 51 PYPY_MINMEM_VARS= PYTHON_CMD="${SETENV} PYPY_GC_MAX_DELTA=200MB ${LOCALBASE}/bin/pypy --jit loop_longevity=300"
45 OPTIONS_DEFAULT= PYTHON
46 . endif
47 .else
48 OPTIONS_SLAVE= PYTHON
49 .endif
50 52
51 LOCALBASE?= /usr/local 53 PYPY_TAG= pypy
54 PYPY_DIR= ${PYPY_TAG}-${DISTVERSION:C|([0-9])\.([0-9]+).*|\1.\2|}
55
56 PYPY_PYTHON_IMPL_VER= 2.7
57 PYPY_PYTHON_IMPL_VER_MAJOR= ${PYPY_PYTHON_IMPL_VER:C|([0-9]+)\.[0-9]+|\1|}
58
59 PYPY_CFFI_VER= pypy-73
60 PYPY_LDLIBRARY= libpypy-c.so
61 PYPY_EXECUTABLE= pypy-c
62
63 PYPY_ARGS=
64
65 PLIST_SUB+= PYPY_DIR=${PYPY_DIR} \
66 PYPY_CFFI_VER=${PYPY_CFFI_VER} \
67 PYPY_LDLIBRARY=${PYPY_LDLIBRARY}
52 68
53 ALL_TARGET= ${PYPY_EXECUTABLE} 69 ALL_TARGET= ${PYPY_EXECUTABLE}
54 BUILD_WRKSRC?= ${WRKDIR}/build/usession-${PORTNAME}-0/testing_1 70 BUILD_WRKSRC= ${WRKDIR}/build/usession-${PYPY_TAG}-0/testing_1
55 MAKE_ENV+= PYPY_LOCALBASE=${LOCALBASE} LDSHARED="${CC} -shared" 71 MAKE_ENV+= PYPY_LOCALBASE=${LOCALBASE} LDSHARED="${CC} -shared"
56 PACKAGE_ARGS?= --without-gdbm --without-sqlite3 --without-_tkinter 72 PACKAGE_ARGS= --without-gdbm --without-sqlite3 --without-_tkinter
57 LLD_UNSAFE= yes 73 LLD_UNSAFE= yes
58 74
59 python_OLD_CMD= ${LOCALBASE}/bin/python 75 # shebang configuration
60 python_CMD= ${PREFIX}/bin/${PORTNAME} 76 python_CMD= ${LOCALBASE}/bin/pypy${PYPY_PYTHON_IMPL_VER}
61
62 .if ${PORTNAME} != pypy
63 PYPY_BUILD_DEPENDS= pypy:lang/pypy
64 PYPY_MINMEM_BUILD_DEPENDS= pypy:lang/pypy
65 .endif
66 PYPY_VARS= PYTHON_CMD=${LOCALBASE}/bin/pypy
67 PYPY_MINMEM_VARS= PYTHON_CMD="${SETENV} PYPY_GC_MAX_DELTA=200MB ${LOCALBASE}/bin/pypy --jit loop_longevity=300"
68 PYTHON_BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}pycparser>=2.10:devel/py-pycparser@${PY_FLAVOR}
69 PYTHON_USES= python:2.7,build
70
71 DESCR= ${.CURDIR}/pkg-descr
72 PATCHDIR= ${.CURDIR}/files
73
74 .include "bsd.pypy.mk"
75 #.include <bsd.port.pre.mk>
76
77 DISTINFO_FILE?= ${.CURDIR}/distinfo
78 PLIST?= ${.CURDIR}/pkg-plist
79
80 .if ${OPSYS} == FreeBSD && ${ARCH} != i386 && ${ARCH} != amd64
81 PYPY_ARGS= --withoutmod-_vmprof
82 .else
83 LIB_DEPENDS+= libunwind.so:devel/libunwind
84 .endif
85
86 .if ${PORTNAME} == pypy
87 SHEBANG_FILES= lib-python/2.7/plat-mac/appletrunner.py \ 77 SHEBANG_FILES= lib-python/2.7/plat-mac/appletrunner.py \
88 lib-python/2.7/plat-mac/bundlebuilder.py \ 78 lib-python/2.7/plat-mac/bundlebuilder.py \
89 lib-python/2.7/keyword.py \ 79 lib-python/2.7/keyword.py \
90 lib-python/2.7/test/regrtest.py \ 80 lib-python/2.7/test/regrtest.py \
91 lib-python/2.7/test/pystone.py \ 81 lib-python/2.7/test/pystone.py \
117 lib-python/2.7/quopri.py \ 107 lib-python/2.7/quopri.py \
118 lib-python/2.7/timeit.py \ 108 lib-python/2.7/timeit.py \
119 lib-python/2.7/smtplib.py \ 109 lib-python/2.7/smtplib.py \
120 lib_pypy/_cffi_ssl/tools/make_ssl_data.py 110 lib_pypy/_cffi_ssl/tools/make_ssl_data.py
121 111
112 #.include "bsd.pypy.mk"
113 .include <bsd.port.pre.mk>
114
115 .if ${OPSYS} == FreeBSD && ${ARCH} != i386 && ${ARCH} != amd64
116 PYPY_ARGS= --withoutmod-_vmprof
122 .else 117 .else
123 . if ${PORT_OPTIONS:MFORPYIMPL39} 118 LIB_DEPENDS+= libunwind.so:devel/libunwind
124 SHEBANG_FILES= \
125 lib-python/3/base64.py \
126 lib-python/3/cProfile.py \
127 lib-python/3/cgi.py \
128 lib-python/3/encodings/rot_13.py \
129 lib-python/3/keyword.py \
130 lib-python/3/idlelib/pyshell.py \
131 lib-python/3/lib2to3/pgen2/token.py \
132 lib-python/3/lib2to3/tests/data/different_encoding.py \
133 lib-python/3/lib2to3/tests/data/false_encoding.py \
134 lib-python/3/lib2to3/tests/pytree_idempotency.py \
135 lib-python/3/pdb.py \
136 lib-python/3/platform.py \
137 lib-python/3/profile.py \
138 lib-python/3/pydoc.py \
139 lib-python/3/quopri.py \
140 lib-python/3/smtpd.py \
141 lib-python/3/smtplib.py \
142 lib-python/3/symbol.py \
143 lib-python/3/tabnanny.py \
144 lib-python/3/tarfile.py \
145 lib-python/3/test/bisect_cmd.py \
146 lib-python/3/test/crashers/recursive_call.py \
147 lib-python/3/test/curses_tests.py \
148 lib-python/3/test/pystone.py \
149 lib-python/3/test/re_tests.py \
150 lib-python/3/test/regrtest.py \
151 lib-python/3/timeit.py \
152 lib-python/3/trace.py \
153 lib-python/3/turtledemo/bytedesign.py \
154 lib-python/3/turtledemo/clock.py \
155 lib-python/3/turtledemo/forest.py \
156 lib-python/3/turtledemo/fractalcurves.py \
157 lib-python/3/turtledemo/lindenmayer.py \
158 lib-python/3/turtledemo/minimal_hanoi.py \
159 lib-python/3/turtledemo/paint.py \
160 lib-python/3/turtledemo/peace.py \
161 lib-python/3/turtledemo/penrose.py \
162 lib-python/3/turtledemo/planet_and_moon.py \
163 lib-python/3/turtledemo/sorting_animate.py \
164 lib-python/3/turtledemo/tree.py \
165 lib-python/3/turtledemo/yinyang.py \
166 lib-python/3/turtledemo/__main__.py \
167 lib-python/3/uu.py \
168 lib-python/3/webbrowser.py \
169 lib_pypy/_cffi_ssl/tools/make_ssl_data.py \
170 lib-python/3/test/ziptestdata/header.sh \
171 lib-python/3/test/ziptestdata/exe_with_z64 \
172 lib-python/3/test/ziptestdata/exe_with_zip
173 . elif ${PORT_OPTIONS:MFORPYIMPL310}
174 SHEBANG_FILES= \
175 lib-python/3/base64.py \
176 lib-python/3/cProfile.py \
177 lib-python/3/cgi.py \
178 lib-python/3/encodings/rot_13.py \
179 lib-python/3/keyword.py \
180 lib-python/3/idlelib/pyshell.py \
181 lib-python/3/lib2to3/pgen2/token.py \
182 lib-python/3/lib2to3/tests/data/different_encoding.py \
183 lib-python/3/lib2to3/tests/data/false_encoding.py \
184 lib-python/3/lib2to3/tests/pytree_idempotency.py \
185 lib-python/3/pdb.py \
186 lib-python/3/platform.py \
187 lib-python/3/profile.py \
188 lib-python/3/pydoc.py \
189 lib-python/3/quopri.py \
190 lib-python/3/smtpd.py \
191 lib-python/3/smtplib.py \
192 lib-python/3/tabnanny.py \
193 lib-python/3/tarfile.py \
194 lib-python/3/test/bisect_cmd.py \
195 lib-python/3/test/crashers/recursive_call.py \
196 lib-python/3/test/curses_tests.py \
197 lib-python/3/test/pystone.py \
198 lib-python/3/test/re_tests.py \
199 lib-python/3/test/regrtest.py \
200 lib-python/3/timeit.py \
201 lib-python/3/trace.py \
202 lib-python/3/turtledemo/bytedesign.py \
203 lib-python/3/turtledemo/clock.py \
204 lib-python/3/turtledemo/forest.py \
205 lib-python/3/turtledemo/fractalcurves.py \
206 lib-python/3/turtledemo/lindenmayer.py \
207 lib-python/3/turtledemo/minimal_hanoi.py \
208 lib-python/3/turtledemo/paint.py \
209 lib-python/3/turtledemo/peace.py \
210 lib-python/3/turtledemo/penrose.py \
211 lib-python/3/turtledemo/planet_and_moon.py \
212 lib-python/3/turtledemo/sorting_animate.py \
213 lib-python/3/turtledemo/tree.py \
214 lib-python/3/turtledemo/yinyang.py \
215 lib-python/3/turtledemo/__main__.py \
216 lib-python/3/uu.py \
217 lib-python/3/webbrowser.py \
218 lib_pypy/_cffi_ssl/tools/make_ssl_data.py \
219 lib-python/3/test/ziptestdata/header.sh \
220 lib-python/3/test/ziptestdata/exe_with_z64 \
221 lib-python/3/test/ziptestdata/exe_with_zip
222 . endif
223 .endif 119 .endif
224 120
225 pre-build: 121 pre-build:
226 if [ ! -f ${BUILD_WRKSRC}/Makefile ]; then \ 122 if [ ! -f ${BUILD_WRKSRC}/Makefile ]; then \
227 ${RM} -r ${WRKDIR}/build; \ 123 ${RM} -r ${WRKDIR}/build; \
228 ${MKDIR} ${WRKDIR}/build; \ 124 ${MKDIR} ${WRKDIR}/build; \
229 (cd ${WRKSRC}/pypy/goal; \ 125 (cd ${WRKSRC}/pypy/goal; \
230 ${SETENV} ${MAKE_ENV} TMPDIR=${WRKDIR}/build PYPY_USESSION_BASENAME=${PORTNAME} \ 126 ${SETENV} ${MAKE_ENV} TMPDIR=${WRKDIR}/build PYPY_USESSION_BASENAME=${PYPY_TAG} \
231 ${PYTHON_CMD} ../../rpython/bin/rpython --source --opt=jit targetpypystandalone.py ${PYPY_ARGS}); \ 127 ${PYTHON_CMD} ../../rpython/bin/rpython --source --opt=jit targetpypystandalone.py ${PYPY_ARGS}); \
232 fi 128 fi
233 129
234 post-build: 130 post-build:
235 ${CP} ${BUILD_WRKSRC}/${PYPY_EXECUTABLE} ${BUILD_WRKSRC}/${PYPY_LDLIBRARY} ${WRKSRC}/pypy/goal/ 131 ${CP} ${BUILD_WRKSRC}/${PYPY_EXECUTABLE} ${BUILD_WRKSRC}/${PYPY_LDLIBRARY} ${WRKSRC}/pypy/goal/
238 (cd ${WRKSRC}; \ 134 (cd ${WRKSRC}; \
239 ${SETENV} ${MAKE_ENV} TMPDIR=${WRKDIR}/build \ 135 ${SETENV} ${MAKE_ENV} TMPDIR=${WRKDIR}/build \
240 ${PYTHON_CMD} ${WRKSRC}/pypy/tool/release/package.py --builddir ${WRKDIR}/build --archive-name ${PYPY_DIR} \ 136 ${PYTHON_CMD} ${WRKSRC}/pypy/tool/release/package.py --builddir ${WRKDIR}/build --archive-name ${PYPY_DIR} \
241 ${PACKAGE_ARGS}) 137 ${PACKAGE_ARGS})
242 ${EXTRACT_CMD} -C ${STAGEDIR}${PREFIX} -xf ${WRKDIR}/build/${PYPY_DIR}.tar.bz2 138 ${EXTRACT_CMD} -C ${STAGEDIR}${PREFIX} -xf ${WRKDIR}/build/${PYPY_DIR}.tar.bz2
243 ${LN} -fs ../${PYPY_DIR}/bin/${PORTNAME} ${STAGEDIR}${PREFIX}/bin/${PORTNAME} 139 ${LN} -fs ../${PYPY_DIR}/bin/${PYPY_TAG} ${STAGEDIR}${PREFIX}/bin/${PYPY_TAG}
244 .if ${PORT_OPTIONS:MFORPYIMPL39} || ${PORT_OPTIONS:MFORPYIMPL310} 140 ${LN} -fs ../${PYPY_DIR}/bin/${PYPY_TAG} ${STAGEDIR}${PREFIX}/bin/${PORTNAME}
245 ${FIND} ${STAGEDIR}${PREFIX}/${PYPY_DIR}/lib/${PYTHON_IMPL_MINOR} -name '*.so' | ${XARGS} ${STRIP_CMD} 141 ${LN} -fs ../${PYPY_DIR}/bin/${PYPY_TAG} ${STAGEDIR}${PREFIX}/bin/${PYPY_TAG}${PYPY_PYTHON_IMPL_VER}
246 .else
247 ${FIND} ${STAGEDIR}${PREFIX}/${PYPY_DIR}/lib_pypy/ -name '*.so' | ${XARGS} ${STRIP_CMD} 142 ${FIND} ${STAGEDIR}${PREFIX}/${PYPY_DIR}/lib_pypy/ -name '*.so' | ${XARGS} ${STRIP_CMD}
248 .endif
249 .if ${PORT_OPTIONS:MFORPYIMPL39} || ${PORT_OPTIONS:MFORPYIMPL310}
250 . if ${PORT_OPTIONS:MBYTECOMPILE}
251 @echo Byte-compile the Python standard library for optimization levels 0, 1 and 2 with invalidation mode ${COMPILEALL_INVALIDATIONMODE}
252 (cd ${STAGEDIR}${PREFIX}/${PYPY_DIR} && ${SETENV} LD_LIBRARY_PATH=${WRKSRC}/pypy/goal \
253 ${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)
254 . else
255 @echo Distribution of byte-compiled standard library files is deactivated
256 . endif
257 .else
258 @echo Byte-compilation of standard library files is not yet supported
259 .endif
260 143
261 do-test: 144 do-test:
262 # See https://bitbucket.org/pypy/buildbot/src/default/bot2/pypybuildbot/builds.py?at=default#builds.py-386 145 # See https://bitbucket.org/pypy/buildbot/src/default/bot2/pypybuildbot/builds.py?at=default#builds.py-386
263 # add_translated_tests() 146 # add_translated_tests()
264 (cd ${WRKSRC}; \ 147 (cd ${WRKSRC}; \
281 ${REINPLACE_CMD} -e 's|^${PYPY_DIR}|%%PYPY_DIR%%|g' \ 164 ${REINPLACE_CMD} -e 's|^${PYPY_DIR}|%%PYPY_DIR%%|g' \
282 -e 's|${PYPY_CFFI_VER}|%%PYPY_CFFI_VER%%|g' \ 165 -e 's|${PYPY_CFFI_VER}|%%PYPY_CFFI_VER%%|g' \
283 -e 's/\(.*\/__pycache__\)\/$$/@dir \1/g' \ 166 -e 's/\(.*\/__pycache__\)\/$$/@dir \1/g' \
284 -e '/\/$$/d' \ 167 -e '/\/$$/d' \
285 ${WRKDIR}/.plist-files-gen 168 ${WRKDIR}/.plist-files-gen
286 ${ECHO} bin/${PORTNAME} > ${WRKDIR}/pkg-plist 169 ${ECHO} bin/${PYPY_TAG} > ${WRKDIR}/pkg-plist
287 ${SORT} ${WRKDIR}/.plist-files-gen | ${GREP} -v '\.orig' >> ${WRKDIR}/pkg-plist 170 ${SORT} ${WRKDIR}/.plist-files-gen | ${GREP} -v '\.orig' >> ${WRKDIR}/pkg-plist
288 ${CP} ${WRKDIR}/pkg-plist ${.CURDIR}/pkg-plist 171 ${CP} ${WRKDIR}/pkg-plist ${.CURDIR}/pkg-plist
289 172
290 .include <bsd.port.post.mk> 173 .include <bsd.port.post.mk>