# -*- 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-psycopg2
version             2.9.13
revision            0

categories-append   databases
maintainers         {snc @nerdling} openmaintainer
license             LGPL-3+
platforms           darwin freebsd

description         A python DBAPI-2.0-compliant database adapter for postgresql

long_description    Psycopg2 is a postgresql database adapter for python. \
                    It's fully compliant to python's DBAPI-2.0. psycopg is \
                    designed for heavily multi-threaded applications \
                    featuring connection pooling.

python.versions     27 310 311 312 313 314

homepage            https://www.psycopg.org

checksums           rmd160  f9d9d8bff55c49577283bdbd3ec1fbd8f4dab356 \
                    sha256  d36784fc2dae69523ba4b79c7d1d1b4d6e83e87836874f111262f4db940b16a6 \
                    size    378068

set pgsql_versions {10 11 12 13 14 15 16 17 18}
set pgsql_variants {}
foreach pgsql_ver ${pgsql_versions} {
    lappend pgsql_variants postgresql${pgsql_ver}
}

proc pgsql_variant_set {} {
    global pgsql_variants

    foreach pgsql_variant ${pgsql_variants} {
        if {[variant_isset ${pgsql_variant}]} {
            return yes
        }
    }

    return no
}

proc pgsql_version {} {
    global pgsql_versions

    foreach pgsql_ver ${pgsql_versions} {
        if {[variant_isset postgresql${pgsql_ver}]} {
            return ${pgsql_ver}
        }
    }

    error "No postgresql variant enabled"
}

if {${name} ne ${subport}} {
    if {${python.version} == 27} {
        # NOTE: Don't reuse old revision, for resurrected Python 2.7 subport
        version     2.8.6
        revision    0

        checksums   rmd160  aea153e22c9ac8b1b504c7e8abcad4310aa12cae \
                    sha256  fb23f6c71107c37fd667cb4ea363ddeb936b348bbd6449278eb92c189699f543 \
                    size    383797

        patchfiles-append \
                    patch-setup.cfg-py27.diff

        if {![pgsql_variant_set]} {
            default_variants +postgresql14
        }

        livecheck.type none
    } else {
        if {![pgsql_variant_set]} {
            default_variants +postgresql18
        }
    }

    set pgsql_ver \
        [pgsql_version]

    if {${python.version} > 27} {
        python.pep517 yes
        depends_build-append port:py${python.version}-virtualenv
        patchfiles-append \
                    patch-setup.cfg.diff
    }

    depends_lib-append  \
                    port:py${python.version}-setuptools \
                    path:lib/libssl.dylib:openssl \
                    port:postgresql${pgsql_ver}

    post-patch {
        reinplace \
            s|@PG_CONFIG@|${prefix}/lib/postgresql${pgsql_ver}/bin/pg_config|g \
            ${worksrcpath}/setup.cfg
    }

    foreach postgresql_variant ${pgsql_variants} {
        variant ${postgresql_variant} \
            conflicts [lsearch -all -inline -not -exact ${pgsql_variants} ${postgresql_variant}] \
            description "Build using postgresql v[string range ${postgresql_variant} 10 end]" {}
    }
}

universal_variant       no
