aboutsummaryrefslogtreecommitdiffstats
path: root/math/sage/Makefile
blob: 6fdcf06a51729d20ce02cb99d0de7724a86ff80c (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
122
123
124
125
126
127
128
129
# Created by: Stephen Montgomery-Smith <stephen@FreeBSD.org>
# $FreeBSD$

PORTNAME=   sage
PORTVERSION=    6.7
CATEGORIES= math
MASTER_SITES=   http://boxen.math.washington.edu/home/sagemath/sage-mirror/src/ \
        http://mirrors.xmission.com/sage/src/ \
        http://www-ftp.lip6.fr/pub/math/sagemath/src/ \
        http://mirrors.mit.edu/sage/src/ \
        http://www.sagemath.org/src-old/
PKGNAMESUFFIX=  -math

MAINTAINER= stephen@FreeBSD.org
COMMENT=    Open source Mathematics software

LICENSE=    GPLv3
LICENSE_FILE=   ${WRKSRC}/COPYING.txt

BUILD_DEPENDS=  bash:shells/bash \
        convert:graphics/ImageMagick \
        ffmpeg:multimedia/ffmpeg \
        automake:devel/automake \
        autoconf:devel/autoconf
LIB_DEPENDS=    libatlas.so:math/atlas \
        liblapack.so:math/lapack
RUN_DEPENDS=    bash:shells/bash

pre-extract:
    @${ECHO_MSG}
    @${ECHO_MSG} Instead of installing the port, which will take a considerable amount of
    @${ECHO_MSG} extra time and space, you can instead type \"make build\".  Then you can move
    @${ECHO_MSG} work/${PORTNAME}-${PORTVERSION} to wherever you like, and run sage from there.
    @${ECHO_MSG} However, there is no guarantee that this alternative will always work.
    @sleep 10

PLIST_FILES=    bin/sage
USE_TEX=    latex:build
USES=       gmake iconv jpeg tk perl5

# Optimization flags will be defined by the source
CFLAGS:=    ${CFLAGS:C/^-O.*$//}
FFLAGS:=    ${CFLAGS:C/^-O.*$//}

MAKE_ENV+=  SAGE_PORT=yes \
        SAGE_ATLAS_LIB=${LOCALBASE}/lib \
        DOT_SAGE=${WRKSRC}/tmp/.sage \
        SAGE_FAT_BINARY=yes \
        PERL=${PERL}

# The following is needed for the lapack subpackage.
MAKE_ARGS+= ARCH="${AR}"

post-patch:
# Create wrapper for invocation of make.
    @${MKDIR} ${WRKSRC}/local/bin
    @${LN} -s -f ${LOCALBASE}/bin/gmake ${WRKSRC}/local/bin/make

# Create wrapper for invocation of ld.
    @${SED} -e 's#%%LD%%#${LOCALBASE}/bin/ld#' \
        ${FILESDIR}/ld.in > ${WRKSRC}/local/bin/ld
    @${CHMOD} +x ${WRKSRC}/local/bin/ld

post-build:
    ${RM} -rf ${WRKSRC}/tmp/.sage
    ${CHMOD} -R a+rX ${WRKSRC}

check regression-test test: build
    @${ECHO_MSG} This test can also be performed after installation by typing \"sage -testall\".
    @${ECHO_MSG}
    cd ${WRKSRC} && ${SETENV} DOT_SAGE=${WRKSRC}/tmp/.sage ./sage -testall
    ${RM} -f ${WRKSRC}/python*.core

# Don't build docs (because of mysterious race conditions).
ALL_TARGET= build

INSTALL_SAGE_DIR=   ${PREFIX}/${PORTNAME}-${PORTVERSION}
STAGED_SAGE_DIR=    ${STAGEDIR}${INSTALL_SAGE_DIR}
do-install:
    cd ${WRKDIR} && ${FIND} -s ${WRKSRC} | \
        ${GREP} -v '^${WRKSRC}/upstream/' | \
        ${GREP} -v '^${WRKSRC}/tmp' | \
        ${SED} -e 's#${WRKDIR}/##' | \
        ${CPIO} -pmud -R ${BINOWN}:${BINGRP} ${STAGEDIR}${PREFIX}
    ${ECHO_CMD} | ${SETENV} DOT_SAGE=${STAGED_SAGE_DIR}/tmp/.sage ${STAGED_SAGE_DIR}/sage
    ${RM} -rf ${STAGED_SAGE_DIR}/tmp/.sage
    ${SED} -e "s+#SAGE_ROOT.*+SAGE_ROOT=${INSTALL_SAGE_DIR}+" ${WRKSRC}/sage > ${STAGEDIR}${PREFIX}/bin/sage
    ${CHMOD} ${BINMODE} ${STAGEDIR}${PREFIX}/bin/sage

post-install:
    @${FIND} -s ${STAGED_SAGE_DIR} -not -type d | \
        ${SED} -e 's#${STAGEDIR}${PREFIX}/##' >> ${TMPPLIST}
    @${FIND} -s ${STAGED_SAGE_DIR} -type d -empty | \
        ${SED} -e 's#${STAGEDIR}${PREFIX}/#@dir #' >> ${TMPPLIST}

.include <bsd.port.pre.mk>

MAKE_ENV+=  MAKE="${MAKE} -j${MAKE_JOBS_NUMBER}"

.ifdef MAINTAINER_MODE
test-fbsd-patches:  patch
    ${RM} -rf ${WRKSRC}/build/pkgs/*/src; \
    for d in ${WRKSRC}/build/pkgs/*; do \
        if ls $$d/fbsd-patch-* > /dev/null 2>&1; then \
            ${ECHO_MSG} Testing patches in $${d##*/}; \
            b=$${d##*/}-`${CAT} $$d/package-version.txt | ${SED} 's/\.p.*//'`; \
            c=${WRKSRC}/upstream/$$b.tar.bz2 ; \
            if [ ! -e $$c ]; then \
                c=${WRKSRC}/upstream/$$b.tar.gz ; \
                if [ ! -e $$c ]; then \
                    ${ECHO_MSG} Couldn\'t find $$c; \
                    exit 1; \
                fi; \
            fi; \
            b=`echo $$b | sed 's/python/Python/'` ; \
            if ! (cd $$d && tar xf $$c && ${MV} $$b src); then \
                ${ECHO_MSG} Unable to unarchive $$c; \
                exit 1; \
            fi; \
            if ! (cd $$d && ${CAT} fbsd-patch-* | patch); then \
                ${ECHO_MSG} Patches in $${d##*/} failed; \
                exit 1; \
            fi; \
        fi; \
    done; \
    ${RM} -rf ${WRKSRC}/build/pkgs/*/src
.endif

.include <bsd.port.post.mk>