aboutsummaryrefslogtreecommitdiffstats
path: root/lang/pypy/Makefile
blob: b468589fc7f95a336a19d321814c2e58e661224c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
# Created by: David Naylor <naylor.b.david@gmail.com>
# $FreeBSD$

PORTNAME?=  pypy
DISTVERSION?=   5.3.1   # Also update bsd.pypy.cffi.mk
CATEGORIES= lang python
MASTER_SITES=   https://bitbucket.org/pypy/pypy/downloads/
DISTNAME?=  ${PORTNAME}2-v${PORTVERSION}-src

MAINTAINER= python@FreeBSD.org
COMMENT=    Fast, compliant implementation of the Python language

BROKEN_powerpc64=   Does not build

LIB_DEPENDS=    libexpat.so:textproc/expat2 \
        libffi.so:devel/libffi
TEST_DEPENDS=   ${PREFIX}/${PYPY_DIR}/lib_pypy/_gdbm_cffi.${PYPY_CFFI_VER}.so:databases/pypy-gdbm \
        ${PREFIX}/${PYPY_DIR}/lib_pypy/_sqlite3_cffi.${PYPY_CFFI_VER}.so:databases/pypy-sqlite3 \
        ${PREFIX}/${PYPY_DIR}/lib_pypy/_tkinter/tklib_cffi.${PYPY_CFFI_VER}.so:x11-toolkits/pypy-tkinter

ONLY_FOR_ARCHS= i386 amd64 armv6 powerpc64
ONLY_FOR_ARCHS_REASON=  PyPy JIT only supported on these architectures

OPTIONS_SINGLE= TRANS
OPTIONS_SINGLE_TRANS=   PYTHON
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
LOCALBASE?= /usr/local
.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

ALL_TARGET= pypy-c
BUILD_WRKSRC?=  ${WRKDIR}/build/usession-release-pypy2.7-v${PORTVERSION}-0/testing_1
MAKE_ENV+=  PYPY_LOCALBASE=${LOCALBASE}
PACKAGE_ARGS?=  --without-gdbm --without-sqlite3 --without-tk
USE_LDCONFIG=   ${PREFIX}/${PYPY_DIR}/bin
USES=       gettext-runtime gmake ssl tar:bzip2

.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_USES=    python:2,build

DISTINFO_FILE=  ${.CURDIR}/distinfo
MASTERDIR?= ${.CURDIR}
PATCHDIR=   ${.CURDIR}/files
PLIST=      ${.CURDIR}/pkg-plist

.include "${MASTERDIR}/bsd.pypy.mk"
.include <bsd.port.options.mk>

.if ${ARCH} == "i386" || ${ARCH} == "armv6"
PYPY_BITS=  32
.elif ${ARCH} == "amd64" || ${ARCH} == "powerpc64"
PYPY_BITS=  64
.endif
PLIST_SUB+= PYPY_BITS="${PYPY_BITS}"

pre-build:
    if [ ! -f ${BUILD_WRKSRC}/Makefile ]; then \
        ${RM} -r ${WRKDIR}/build; \
        ${MKDIR} ${WRKDIR}/build; \
        (cd ${WRKSRC}/pypy/goal; \
            ${SETENV} ${MAKE_ENV} TMPDIR=${WRKDIR}/build \
            ${PYTHON_CMD} ../../rpython/bin/rpython --source -Ojit targetpypystandalone.py); \
    fi

post-build:
    ${CP} ${BUILD_WRKSRC}/pypy-c ${BUILD_WRKSRC}/libpypy-c.so ${WRKSRC}/pypy/goal/

do-install:
    ${SETENV} TMPDIR=${WRKDIR}/build \
        ${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}
    ${FIND} ${STAGEDIR}${PREFIX}/${PYPY_DIR}/lib_pypy/ -name '*.so' | ${XARGS} ${STRIP_CMD}

do-test:
    # See https://bitbucket.org/pypy/buildbot/src/default/bot2/pypybuildbot/builds.py?at=default#builds.py-386
    # add_translated_tests()
    (cd ${WRKSRC}; \
        ${SETENV} ${MAKE_ENV} TMPDIR=${WRKDIR}/build PYTHONPATH=${WRKSRC} \
        ${WRKSRC}/pypy/goal/pypy-c testrunner/runner.py --root pypy --logfile=pytest-A.log \
            --parallel-runs ${MAKE_JOBS_NUMBER} \
            --config pypy/pytest-A.cfg --config pypy/pytest-A.py)
.for dir in lib-python pypy/module/pypyjit/test
    (cd ${WRKSRC}; \
        ${SETENV} ${MAKE_ENV} TMPDIR=${WRKDIR}/build PYTHONPATH=${WRKSRC} \
        ${WRKSRC}/pypy/goal/pypy-c pypy/test_all.py --basetemp ${WRKDIR}/build --pypy pypy/goal/pypy-c \
            ${dir} )
.endfor
    (cd ${WRKSRC}/lib-python/2.7/test; \
        ${SETENV} ${MAKE_ENV} TMPDIR=${WRKDIR}/build PYTHONPATH=${WRKSRC} \
        ${WRKSRC}/pypy/goal/pypy-c regrtest.py -vvu all)

pkg-plist: build
    ${TAR} -tf ${WRKDIR}/build/${PYPY_DIR}.tar.bz2 > ${WRKDIR}/.plist-files-gen
    ${REINPLACE_CMD} -e 's|^${PYPY_DIR}|%%PYPY_DIR%%|g' \
        -e 's|_${PYPY_BITS}_|_%%PYPY_BITS%%_|g' \
        -e 's|${PYPY_CFFI_VER}|%%PYPY_CFFI_VER%%|g' \
        -e '/\/$$/d' \
            ${WRKDIR}/.plist-files-gen
    ${ECHO} bin/${PORTNAME} > ${WRKDIR}/pkg-plist
    ${SORT} ${WRKDIR}/.plist-files-gen >> ${WRKDIR}/pkg-plist
    ${CP} ${WRKDIR}/pkg-plist ${.CURDIR}/pkg-plist

.include <bsd.port.mk>
53c56535a3b6ea'>Updated italian translationMarco Ciampa2004-06-082-1741/+1208 * Updated Polish translation by GNOME PL Team.Artur Flinta2004-06-082-121/+88 * Updated Czech translation.Miloslav Trmac2004-06-072-151/+51 * Updated British English translationGareth Owen2004-06-072-119/+69 * updateFunda Wang2004-06-061-630/+3368 * Updated Catalan translation by Xavi Conde Rueda <xaviconde@eresmas.com>.Jordi Mallach2004-06-062-7220/+5248 * svn path=/trunk/; revision=26228Updated ja.po. T.Aihana2004-06-052-874/+372 * Updated Simplified Chinese translationFunda Wang2004-06-052-3318/+287 * Updated Hungarian translation.Andras Timar2004-06-042-13694/+2739 * Merge from release branch.JP Rosevear2004-06-04