138 lines
5.0 KiB
Makefile
138 lines
5.0 KiB
Makefile
# $OpenBSD: Makefile,v 1.8 2013/09/19 08:39:30 sthen Exp $
|
|
|
|
VMEM_WARNING = Yes
|
|
|
|
ONLY_FOR_ARCHS = amd64
|
|
|
|
COMMENT = fast implementation of the Python language
|
|
|
|
V = 2.1
|
|
DISTNAME = pypy-${V}-src
|
|
PKGNAME = pypy-${V}
|
|
BOOTSTRAP-amd64 = pypy-bootstrap-amd64-$V-2.tar.xz
|
|
|
|
CATEGORIES = lang
|
|
|
|
HOMEPAGE = http://pypy.org/
|
|
|
|
MAINTAINER = Laurence Tratt <laurie@tratt.net>
|
|
|
|
# PyPy is MIT; the Python libs it comes with have the same license as Python
|
|
PERMIT_PACKAGE_CDROM = Yes
|
|
|
|
WANTLIB += bz2 c crypto curses expat ffi m pthread ssl util z
|
|
|
|
MASTER_SITES = https://bitbucket.org/pypy/pypy/downloads/
|
|
MASTER_SITES0 = http://spacehopper.org/mirrors/
|
|
EXTRACT_SUFX = .tar.bz2
|
|
|
|
PSEUDO_FLAVORS = no_bootstrap
|
|
FLAVOR ?=
|
|
|
|
DIST_SUBDIR = pypy
|
|
DISTFILES = ${DISTNAME}${EXTRACT_SUFX}
|
|
.if defined(BOOTSTRAP-${MACHINE_ARCH}) && !${FLAVOR:Mno_bootstrap}
|
|
DISTFILES += ${BOOTSTRAP-${MACHINE_ARCH}}:0
|
|
.endif
|
|
# if adding archs, list *all* bootstraps in SUPDISTFILES
|
|
SUPDISTFILES = ${BOOTSTRAP-amd64}:0
|
|
|
|
MODULES += devel/gettext lang/python gcc4 lang/tcl x11/tk
|
|
MODPY_VERSION = 2.7
|
|
MODGCC4_ARCHS = *
|
|
MODGCC4_LANGS = c c++
|
|
|
|
USE_GMAKE = Yes
|
|
BUILD_DEPENDS = textproc/py-sphinx ${MODTK_BUILD_DEPENDS}
|
|
RUN_DEPENDS = ${MODTK_RUN_DEPENDS}
|
|
|
|
WRKDIST = ${WRKDIR}/pypy-${V}-src
|
|
|
|
post-extract:
|
|
@if [ `ulimit -d` -lt $$((4*1024*1024)) ]; then \
|
|
echo datasize limit is too low - amd64 build takes approx 4GB; \
|
|
exit 1; fi
|
|
.if !${FLAVOR:Mno_bootstrap}
|
|
echo '#!/bin/sh' > ${WRKDIR}/bin/pypy
|
|
echo 'LD_LIBRARY_PATH=${WRKDIR}/bootstrap/system-libs exec ${WRKDIR}/bootstrap/bin/pypy "$$@"' >> ${WRKDIR}/bin/pypy
|
|
chmod +x ${WRKDIR}/bin/pypy
|
|
.endif
|
|
|
|
SUBST_VARS += MODTK_INCDIR MODTCL_INCDIR
|
|
|
|
pre-configure:
|
|
${SUBST_CMD} ${WRKSRC}/lib_pypy/_tkinter/tklib.py
|
|
# prevent crap in the plist
|
|
rm ${WRKSRC}/lib_pypy/_tkinter/tklib.py${PATCHORIG} \
|
|
${WRKSRC}/lib_pypy/_tkinter/tklib.py.beforesubst \
|
|
${WRKSRC}/lib_pypy/_tkinter/__init__.py${PATCHORIG} \
|
|
${WRKSRC}/lib_pypy/_tkinter/app.py${PATCHORIG}
|
|
|
|
# When updating the port, see pypy/tool/release/package.py and check for
|
|
# new modules which require a cffi cache.
|
|
CFFI_CACHES = _sqlite3, _curses, syslog, _tkinter
|
|
|
|
do-build:
|
|
.if ${FLAVOR:Mno_bootstrap}
|
|
cd ${WRKSRC}/pypy/goal/ && ${SETENV} ${MAKE_ENV} \
|
|
PYPY_USESSION_DIR=${WRKDIR}/usession \
|
|
PYPY_CTYPES_DIR=${WRKDIR}/ctypes \
|
|
${MODPY_BIN} ../../rpython/bin/rpython --source --opt=jit
|
|
.else
|
|
cd ${WRKSRC}/pypy/goal/ && ${SETENV} ${MAKE_ENV} \
|
|
PYPY_GC_MAX_DELTA=300MB \
|
|
PYPY_USESSION_DIR=${WRKDIR}/usession \
|
|
PYPY_CTYPES_DIR=${WRKDIR}/ctypes \
|
|
pypy --jit loop_longevity=300 \
|
|
../../rpython/bin/rpython --source --opt=jit
|
|
.endif
|
|
cd ${WRKDIR}/usession/testing_1 && ${SETENV} ${MAKE_ENV} ${MAKE_PROGRAM}
|
|
|
|
do-install:
|
|
mkdir -p ${PREFIX}/pypy/bin
|
|
${INSTALL_PROGRAM} ${WRKDIR}/usession/testing_1/pypy-c ${PREFIX}/pypy/bin/pypy
|
|
${INSTALL_DATA_DIR} ${PREFIX}/pypy/include
|
|
cp -rp ${WRKSRC}/include/* ${PREFIX}/pypy/include
|
|
chown -R ${SHAREOWN}:${SHAREGRP} ${PREFIX}/pypy/include
|
|
${INSTALL_DATA_DIR} ${PREFIX}/pypy/lib_pypy
|
|
${INSTALL_DATA_DIR} ${PREFIX}/pypy/lib-python/2.7
|
|
cp -rp ${WRKSRC}/lib_pypy/* ${PREFIX}/pypy/lib_pypy
|
|
cp -rp ${WRKSRC}/lib-python/2.7/* ${PREFIX}/pypy/lib-python/2.7
|
|
${PREFIX}/pypy/bin/pypy -m compileall ${PREFIX}/pypy/lib_pypy
|
|
find ${PREFIX}/pypy/lib-python/2.7 -name "*.py" | grep -v test \
|
|
| xargs ${PREFIX}/pypy/bin/pypy -m compileall
|
|
# make cffi cache
|
|
# this will generate various __pycache__ directories in lib_pypy.
|
|
# and it puts absolute paths in there too, yay...
|
|
${PREFIX}/pypy/bin/pypy -c 'import ${CFFI_CACHES}'
|
|
# but it contains absolute paths, so we fox that:
|
|
${INSTALL_DATA_DIR} ${PREFIX}/pypy/lib_pypy/__pycache__/${TRUEPREFIX}/pypy/
|
|
mv ${PREFIX}/pypy/lib_pypy/__pycache__/${PREFIX}/pypy/* \
|
|
${PREFIX}/pypy/lib_pypy/__pycache__/${TRUEPREFIX}/pypy/
|
|
rm -Rf ${PREFIX}/pypy/lib_pypy/__pycache__/${PORTSDIR}
|
|
${INSTALL_DATA_DIR} ${PREFIX}/pypy/lib_pypy/_tkinter/__pycache__/${TRUEPREFIX}/pypy/
|
|
mv ${PREFIX}/pypy/lib_pypy/_tkinter/__pycache__/${PREFIX}/pypy/* \
|
|
${PREFIX}/pypy/lib_pypy/_tkinter/__pycache__/${TRUEPREFIX}/pypy/
|
|
rm -Rf ${PREFIX}/pypy/lib_pypy/_tkinter/__pycache__/${PORTSDIR}
|
|
chown -R ${SHAREOWN}:${SHAREGRP} ${PREFIX}/pypy/lib_pypy
|
|
chown -R ${SHAREOWN}:${SHAREGRP} ${PREFIX}/pypy/lib-python/2.7
|
|
cd ${PREFIX}/bin && ln -s ../pypy/bin/pypy
|
|
|
|
PYPY_PKG = ${PACKAGE_REPOSITORY}/${MACHINE_ARCH}/all/${FULLPKGNAME}.tgz
|
|
|
|
.include <bsd.port.mk>
|
|
|
|
# The bootstrap-based build process uses less memory and is faster,
|
|
# but if you need to build a new bootstrap because the existing one no
|
|
# longer runs, use FLAVOR=no_bootstrap to do a cpython-based build.
|
|
# Expect 5.3GB+ memory usage on amd64.
|
|
bootstrap: ${PYPY_PKG}
|
|
mkdir -p ${WRKDIR}/prepare/bootstrap/system-libs
|
|
cd ${WRKDIR}/prepare/bootstrap && tar zxf ${PYPY_PKG}
|
|
rm -rf ${WRKDIR}/prepare/bootstrap/{+*,info,man}
|
|
for i in `ldd ${WRKDIR}/prepare/bootstrap/bin/pypy | grep 'lib/' | \
|
|
awk '{ print $$7 }'` ; do \
|
|
cp $$i ${WRKDIR}/prepare/bootstrap/system-libs; done
|
|
cd ${WRKDIR}/prepare && tar cf - bootstrap | \
|
|
xz > ${FULLDISTDIR}/${BOOTSTRAP-${MACHINE_ARCH}}
|