# -*- 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

PortSystem          1.0
PortGroup           python 1.0

name                py-pyproj
version             3.0.1
revision            0
categories-append   devel
platforms           darwin
license             MIT

python.versions     27 35 36 37 38 39

maintainers         {stromnov @stromnov} openmaintainer

description         Python interfaces to PROJ.4 functions.
long_description    Pyrex wrapper to provide python interfaces to PROJ.4 \
                    (http://proj.maptools.org) functions.  Performs \
                    cartographic transformations and geodetic computations.

homepage            https://pyproj4.github.io/pyproj

checksums           rmd160  a27bf9af9b34d0e97a0b14962d42309dd31fb013 \
                    sha256  bfbac35490dd17f706700673506eeb8170f8a2a63fb5878171d4e6eef242d141 \
                    size    168962

if {${name} ne ${subport}} {
    depends_build-append \
                        port:py${python.version}-setuptools \
                        port:py${python.version}-cython

    if {${python.version} < 36} {
        if {${python.version} eq 27} {
            version             2.2.2
            revision            1
            distname            ${python.rootname}-${version}
            checksums           rmd160  39ea00d64f1b85f55c254fc4ee75ef37d879fc2d \
                                sha256  6f129a00afdd817dbb331af5709221f35012bcc11a23b8c83fa09197c1190786 \
                                size    7220807

            depends_lib-append  port:py${python.version}-aenum
        } elseif {${python.version} < 36} {
            version             2.6.1.post1
            revision            1
            distname            ${python.rootname}-${version}
            checksums           rmd160  f7ab40847df75a601a72794ab2be52de1e839b68 \
                                sha256  4f5b02b4abbd41610397c635b275a8ee4a2b5bc72a75572b98ac6ae7befa471e \
                                size    545482
        }

        variant proj6 conflicts proj7 {
            depends_lib-append      port:proj6
            configure.env-append    PROJ_DIR=${prefix}/lib/proj6
            build.env-append        PROJ_DIR=${prefix}/lib/proj6
            destroot.env-append     PROJ_DIR=${prefix}/lib/proj6
        }

        variant proj7 conflicts proj6 {
            depends_lib-append      port:proj7
            configure.env-append    PROJ_DIR=${prefix}/lib/proj7
            build.env-append        PROJ_DIR=${prefix}/lib/proj7
            destroot.env-append     PROJ_DIR=${prefix}/lib/proj7
        }

        if {![variant_isset proj6] && ![variant_isset proj7]} {
            default_variants +proj7
        }

        patchfiles-append   patch-pyproj_datadir.py.v2.diff

        post-patch {
            if {[variant_isset proj6]} {
                reinplace "s|%%INTERNAL_DATADIR%%|${prefix}/lib/proj6/share/proj|" ${worksrcpath}/pyproj/datadir.py
            } else {
                reinplace "s|%%INTERNAL_DATADIR%%|${prefix}/lib/proj7/share/proj|" ${worksrcpath}/pyproj/datadir.py
            }

            # force cython usage
            foreach f [glob ${worksrcpath}/pyproj/*.c] {
                file delete $f
            }
        }
    } else {
        depends_lib-append  port:py${python.version}-certifi \
                            port:proj8

        patchfiles-append   patch-pyproj_datadir.py.diff

        post-patch {
            reinplace "s|%%INTERNAL_DATADIR%%|${prefix}/lib/proj8/share/proj|" ${worksrcpath}/pyproj/datadir.py
        }

        configure.env-append    PROJ_DIR=${prefix}/lib/proj8
        build.env-append        PROJ_DIR=${prefix}/lib/proj8
        destroot.env-append     PROJ_DIR=${prefix}/lib/proj8
    }

    post-destroot {
        xinstall -m 644 -W ${worksrcpath} \
            README.md PKG-INFO \
            ${destroot}${prefix}/share/doc/${subport}
    }

    livecheck.type      none
}
