# -*- coding: utf-8; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:et:sw=4:ts=4:sts=4
# $Id: Portfile 117363 2014-02-24 13:53:46Z g5pw@macports.org $

PortSystem          1.0
PortGroup           python 1.0
PortGroup           github 1.0

github.setup        pymc-devs pymc 2.3.2
name                py-pymc
maintainers         nomaintainer
license             BSD

description         Bayesian statistical models and fitting algorithms for python
long_description    PyMC is a python module that implements Bayesian statistical models \
                    and fitting algorithms, including Markov chain Monte Carlo. \
                    Its flexibility makes it applicable to a large suite of problems as well \
                    as easily extensible. Along with core sampling functionality, \
                    PyMC includes methods for summarizing output, plotting, goodness-of-fit and \
                    convergence diagnostics.

platforms           darwin

dist_subdir         ${name}/${version}_3


python.versions     26 27 32 33

if {${name} ne ${subport}} {
    depends_lib-append  port:py${python.version}-numpy

# md5 checksum for distfile from https://github.com/pymc-devs/pymc/tarball/v2.3/pymc-2.3.tar.gz is e49de8920609727c13de42f3101454fe
# md5 checksum for distfile from https://pypi.python.org/packages/source/p/pymc/pymc-2.3.tar.gz is 03678068b552eecb16fc7aded39d125a
# diff -ur shows unpacked distfiles are identical excepting top level directory name
# see https://trac.macports.org/ticket/41682

    checksums           md5     4eb6c20cbc28370a8f5d364df28ead5f \
                        rmd160  50c4d5cc42f118620b385f77acbccfc6f81c2c55 \
                        sha256  2163edfe1d7ce2b48cccf97e89e86f20437739866e0aeeb2971b91b5d411ae9d


    set gcc_versions {4.3 4.4 4.5 4.6 4.7 4.8 4.9}
    set default_fortran_variant +gcc48
    set g95_conflicts {}

    foreach ver ${gcc_versions} {
        set ver_no_dot [join [split ${ver} "."] ""]

        set variant_line {variant gcc${ver_no_dot} description "build with gfortran from gcc${ver_no_dot}" conflicts g95}

        foreach over ${gcc_versions} {
            if {${ver} == ${over}} {
                continue
            }

            set over_no_dot [join [split ${over} "."] ""]
            append variant_line " conflicts gcc${over_no_dot}"
        }
        append variant_line { {}}

        eval $variant_line

        append g95_conflicts " conflicts gcc${ver_no_dot}"

        if {[variant_isset gcc${ver_no_dot}]} {
            if {${default_fortran_variant} != "+gcc${ver_no_dot}"} {
                set default_fortran_variant ""
            }
        }
    }

    eval [concat {variant g95 description {build with g95}} $g95_conflicts {{}}]

    if {[variant_isset g95]} {
        if {${default_fortran_variant} != "+g95"} {
            set default_fortran_variant ""
        }
    }

    if {${default_fortran_variant} != ""} {
        default_variants-append "${default_fortran_variant}"
    }

    foreach ver ${gcc_versions} {
        set ver_no_dot [join [split ${ver} "."] ""]

        if {[variant_isset gcc${ver_no_dot}]} {
            depends_lib-append path:lib/libgcc/libgcc_s.1.dylib:libgcc
            depends_build-append port:gcc${ver_no_dot}

            build.cmd "${build.cmd} config_fc --fcompiler gfortran"

            configure.fc  ${prefix}/bin/gfortran-mp-${ver}
            configure.f77 ${prefix}/bin/gfortran-mp-${ver}
            configure.f90 ${prefix}/bin/gfortran-mp-${ver}
        }
    }

    if {[variant_isset g95]} {
        depends_lib-append path:lib/libgcc/libgcc_s.1.dylib:libgcc
        depends_build-append port:g95

        build.cmd "${build.cmd} config_fc --fcompiler g95"

        configure.fc ${prefix}/bin/g95
        configure.f77 ${prefix}/bin/g95
        configure.f90 ${prefix}/bin/g95
    }

    # Insert my own archflags, so I can edit LDFLAGS
    python.add_archflags no

    if {[variant_exists universal] && [variant_isset universal]} {
        build.env-append CFLAGS="${configure.universal_cflags}" \
                        OBJCFLAGS="${configure.universal_cflags}" \
                        CXXFLAGS="${configure.universal_cxxflags}" \
                        LDFLAGS="-undefined dynamic_lookup -bundle ${configure.universal_ldflags}"
    } else {
        build.env-append CFLAGS="${configure.cc_archflags}" \
                        OBJCFLAGS="${configure.objc_archflags}" \
                        CXXFLAGS="${configure.cxx_archflags}" \
                        FFLAGS="${configure.f77_archflags}" \
                        F90FLAGS="${configure.f90_archflags}" \
                        FCFLAGS="${configure.fc_archflags}" \
                        LDFLAGS="-undefined dynamic_lookup -bundle ${configure.ld_archflags}"
    }

    livecheck.type          none
}
