# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
# $Id: Portfile 106920 2013-06-11 19:57:15Z jmr@macports.org $

PortSystem              1.0
PortGroup               python 1.0

name                    py-scipy
version                 0.12.0
revision                2
platforms               darwin
license                 BSD
maintainers             sean openmaintainer
description             An opensource library of scientific tools for Python
long_description        ${description}

homepage                http://www.scipy.org/
master_sites            sourceforge:project/scipy/scipy/${version}/
distname                scipy-${version}

checksums               rmd160  35f3177dbcc37e0984fc852abf23ea0aab348ee0 \
                        sha256  b967e802dafe2db043cfbdf0043e1312f9ce9c1386863e1c801a08ddfccf9de6

if {${python.version} >= 26} {
# Stealth update for 0.12.0 (see http://projects.scipy.org/scipy/ticket/1888)
dist_subdir             ${name}/${version}_1
}

python.versions         24 25 26 27 31 32 33

python.add_archflags    no
universal_variant       no

subport py24-scipy {
    # scipy dropped support for Python 2.4 at version 0.12.0
    version                 0.11.0
    revision                1
    master_sites            sourceforge:project/scipy/scipy/${version}/
    distname                scipy-${version}
    checksums               rmd160 68c0d13088d898e96c3a7ea4e77f8fc9b49e6c78 \
                            sha256 b2b74d56a2d58a4f032f91e8b91b1c2272d5eb0b5010082dd1e492e452f862ee
}

subport py25-scipy {
    # scipy dropped support for Python 2.5 at version 0.12.0
    version                 0.11.0
    revision                1
    master_sites            sourceforge:project/scipy/scipy/${version}/
    distname                scipy-${version}
    checksums               rmd160 68c0d13088d898e96c3a7ea4e77f8fc9b49e6c78 \
                            sha256 b2b74d56a2d58a4f032f91e8b91b1c2272d5eb0b5010082dd1e492e452f862ee
}

if {$subport != $name} {
    depends_lib-append      port:py${python.version}-numpy \
                            port:py${python.version}-nose \
                            port:SuiteSparse \
                            port:swig-python

    worksrcdir              ${distname}

    build.env-append        CCFLAGS="-I${prefix}/include -L${prefix}/lib"

    destroot.env-append     CCFLAGS="-I${prefix}/include -L${prefix}/lib"

    patchfiles              umfpack_extra_libs.patch

    post-patch {
        reinplace "s|@@MP_PREFIX@@|${prefix}|g" ${worksrcpath}/site.cfg
        reinplace "s|vecLib|Accelerate|g" ${worksrcpath}/scipy/lib/blas/fblaswrap_veclib_c.c.src
        reinplace "s|vecLib|Accelerate|g" ${worksrcpath}/scipy/linalg/src/fblaswrap_veclib_c.c
        reinplace "s|vecLib|Accelerate|g" ${worksrcpath}/scipy/sparse/linalg/eigen/arpack/ARPACK/FWRAPPERS/veclib_cabi_c.c
        reinplace "s|vecLib|Accelerate|g" ${worksrcpath}/scipy/sparse/linalg/isolve/iterative/FWRAPPERS/veclib_cabi_c.c
    }

    variant atlas description "Use MacPorts ATLAS libraries" {
        depends_lib-append  port:atlas

        build.env-append    ATLAS=${prefix}/lib \
                            LAPACK=${prefix}/lib \
                            BLAS=${prefix}/lib

        destroot.env-append ATLAS=${prefix}/lib \
                            LAPACK=${prefix}/lib \
                            BLAS=${prefix}/lib
    }

    variant gcc43 conflicts gcc44 gcc45 gcc46 gcc47 description "Use gcc 4.3 tool chain for building" {
        configure.compiler  macports-gcc-4.3
        depends_lib-append  port:gcc43
        set fc_options      "config_fc --fcompiler gnu95 --f77exec ${prefix}/bin/gfortran-mp-4.3 --f90exec ${prefix}/bin/gfortran-mp-4.3"
        set config_options  "config --cc ${prefix}/bin/gcc-mp-4.3 --include-dirs ${prefix}/include --library-dirs ${prefix}/lib"
        build.cmd-append    ${fc_options} ${config_options}
        destroot.cmd-append ${fc_options} ${config_options}

        destroot.env-append CC="${prefix}/bin/gcc-mp-4.3" \
                            CXX="${prefix}/bin/g++-mp-4.3"
        build.env-append    CC="${prefix}/bin/gcc-mp-4.3" \
                            CXX="${prefix}/bin/g++-mp-4.3"
    }

    variant gcc44 conflicts gcc43 gcc45 gcc46 gcc47 description "Use gfortran-mp-4.4 as fortran compiler" {
        configure.compiler  macports-gcc-4.4
        depends_lib-append  port:gcc44
        set fc_options      "config_fc --fcompiler gnu95 --f77exec ${prefix}/bin/gfortran-mp-4.4 --f90exec ${prefix}/bin/gfortran-mp-4.4"
        set config_options  "config --cc ${prefix}/bin/gcc-mp-4.4 --include-dirs ${prefix}/include --library-dirs ${prefix}/lib"
        build.cmd-append    ${fc_options} ${config_options}
        destroot.cmd-append ${fc_options} ${config_options}

        destroot.env-append CC="${prefix}/bin/gcc-mp-4.4" \
                            CXX="${prefix}/bin/g++-mp-4.4"
        build.env-append    CC="${prefix}/bin/gcc-mp-4.4" \
                            CXX="${prefix}/bin/g++-mp-4.4"
    }

    variant gcc45 conflicts gcc43 gcc44 gcc46 gcc47 description "Use gfortran-mp-4.5 as fortran compiler" {
        configure.compiler  macports-gcc-4.5
        depends_lib-append  port:gcc45
        set fc_options      "config_fc --fcompiler gnu95 --f77exec ${prefix}/bin/gfortran-mp-4.5 --f90exec ${prefix}/bin/gfortran-mp-4.5"
        set config_options  "config --cc ${prefix}/bin/gcc-mp-4.5 --include-dirs ${prefix}/include --library-dirs ${prefix}/lib"
        build.cmd-append    ${fc_options} ${config_options}
        destroot.cmd-append ${fc_options} ${config_options}

        destroot.env-append CC="${prefix}/bin/gcc-mp-4.5" \
                            CXX="${prefix}/bin/g++-mp-4.5"
        build.env-append    CC="${prefix}/bin/gcc-mp-4.5" \
                            CXX="${prefix}/bin/g++-mp-4.5"
    }

    variant gcc46 conflicts gcc43 gcc44 gcc45 gcc47 description "Use gfortran-mp-4.6 as fortran compiler" {
        configure.compiler  macports-gcc-4.6
        depends_lib-append  port:gcc46
        set fc_options      "config_fc --fcompiler gnu95 --f77exec ${prefix}/bin/gfortran-mp-4.6 --f90exec ${prefix}/bin/gfortran-mp-4.6"
        set config_options  "config --cc ${prefix}/bin/gcc-mp-4.6 --include-dirs ${prefix}/include --library-dirs ${prefix}/lib"
        build.cmd-append    ${fc_options} ${config_options}
        destroot.cmd-append ${fc_options} ${config_options}

        destroot.env-append CC="${prefix}/bin/gcc-mp-4.6" \
                            CXX="${prefix}/bin/g++-mp-4.6"
        build.env-append    CC="${prefix}/bin/gcc-mp-4.6" \
                            CXX="${prefix}/bin/g++-mp-4.6"
    }

    variant gcc47 conflicts gcc43 gcc44 gcc45 gcc46 description "Use gfortran-mp-4.7 as fortran compiler" {
        configure.compiler  macports-gcc-4.7
        depends_lib-append  port:gcc47
        set fc_options      "config_fc --fcompiler gnu95 --f77exec ${prefix}/bin/gfortran-mp-4.7 --f90exec ${prefix}/bin/gfortran-mp-4.7"
        set config_options  "config --cc ${prefix}/bin/gcc-mp-4.7 --include-dirs ${prefix}/include --library-dirs ${prefix}/lib"
        build.cmd-append    ${fc_options} ${config_options}
        destroot.cmd-append ${fc_options} ${config_options}

        destroot.env-append CC="${prefix}/bin/gcc-mp-4.7" \
                            CXX="${prefix}/bin/g++-mp-4.7"
        build.env-append    CC="${prefix}/bin/gcc-mp-4.7" \
                            CXX="${prefix}/bin/g++-mp-4.7"
    }

    if { ![variant_isset gcc43] && ![variant_isset gcc44] && ![variant_isset gcc45] && ![variant_isset gcc46]} {
        default_variants    +gcc47
    }

    livecheck.type          none
} else {
    livecheck.type          regex
    livecheck.url           http://sourceforge.net/api/file/index/project-name/scipy/rss
    livecheck.regex         "scipy\/(\\d+(?:\\.\\d+)*)\]"
}

subport py32-scipy {
    pre-activate {
        set regref [registry_open $subport $version $revision $portvariants ""]
        foreach f [registry_prop_retr $regref imagefiles] {
            if {[file extension $f] == ".pyc" && [file exists $f] && [registry_file_registered $f] == "0"} {
                file delete -force $f
            }
        }
    }
}
