# -*- 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
PortGroup           github 1.0

github.setup        pythongssapi python-gssapi 1.9.0 v
github.tarball_from releases

name                py-gssapi
license             ISC
maintainers         {toby @tobypeterson} openmaintainer

description         Python interface to RFC 2743/2744
long_description    Python-GSSAPI provides both low-level and high level wrappers \
                    around the GSSAPI C libraries. While it focuses on the Kerberos \
                    mechanism, it should also be useable with other GSSAPI mechanisms.

checksums           rmd160  71966a7d6bf97fca5ccf27f687334b53f8bd1d85 \
                    sha256  18bdb2c03c38015833ed14c68ae64e60471251b0483c5669d69a587675662a0b \
                    size    112822

python.versions     39 310 311 312 313

# python-gssapi knows when it's running on macOS, and automatically configures
# itself to use macOS' GSSAPI Framework, which uses macOS' build of Heimdal
# Kerberos.
variant kerberos5 description {Use MIT Kerberos} {
    long_description-append  Uses GSSAPI/Kerberos from MacPorts' kerberos5 \
                             package.
    depends_lib-append       port:kerberos5

    # Support for MIT Kerberos has been brought up upstream before, in
    # https://github.com/pythongssapi/python-gssapi/issues/347
    # In that GitHub issue, this is how the devs say to use MIT Kerberos.
    pre-build {
        set gssapi_cflags    [exec ${prefix}/bin/krb5-config --cflags gssapi]
        set gssapi_libs      [exec ${prefix}/bin/krb5-config --libs gssapi]
        build.env-append     GSSAPI_MAIN_LIB=${prefix}/lib/libgssapi_krb5.dylib \
                             GSSAPI_COMPILER_ARGS=${gssapi_cflags} \
                             GSSAPI_LINKER_ARGS=${gssapi_libs}
    }
}
if {![variant_isset kerberos5]} {
    long_description-append  Uses macOS's built-in GSSAPI/Kerberos.
}

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

    # pycore_frame.h:134: error: ‘for’ loop initial declaration used outside C99 mode
    patchfiles-append       patch-c99.diff

    # Uses GSS.framework on macOS >= 10.9
    if {${os.platform} eq "darwin" && ${os.major} < 13} {
        default_variants    +kerberos5
        if {![variant_isset kerberos5]} {
            ui_error "Built-in GSSAPI/Kerberos is not usable on Mac OS X below 10.9."
            return -code error
        }
    }

    livecheck.type          none
}