# -*- 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-greenlet
version             3.3.2
categories-append   devel
license             MIT PSF

python.versions     27 310 311 312 313 314

maintainers         {stromnov @stromnov} openmaintainer

description         Lightweight in-process concurrent programming

long_description    The \"greenlet\" package is a spin-off of \
                    Stackless, a version of CPython that supports \
                    micro-threads called \"tasklets\". Tasklets run \
                    pseudo-concurrently (typically in a single or \
                    a few OS-level threads) and are synchronized \
                    with data exchanges on \"channels\". \
                    \
                    A \"greenlet\", on the other hand, is a still \
                    more primitive notion of micro-thread with no \
                    implicit scheduling\; coroutines, in other \
                    words. This is useful when you want to control \
                    exactly when your code runs. You can build \
                    custom scheduled micro-threads on top of \
                    greenlet\; however, it seems that greenlets are \
                    useful on their own as a way to make advanced \
                    control flow structures. For example, we can \
                    recreate generators\; the difference with \
                    Python's own generators is that our generators \
                    can call nested functions and the nested \
                    functions can yield values too. Additionally, \
                    you don't need a \"yield\" keyword. See the \
                    example in test_generator.py. \
                    \
                    Greenlets are provided as a C extension module \
                    for the regular unmodified interpreter.

homepage            https://github.com/python-greenlet/greenlet

checksums           rmd160  736db8490b68681226e3e579a6efbb99c11dd791 \
                    sha256  2eaf067fc6d886931c7962e8c6bede15d2f01965560f3359b27c80bde2d151f2 \
                    size    188267

if {${name} ne ${subport}} {
    if {${python.version} == 27} {
        version             2.0.2
        checksums           rmd160  260d2414cd1be4c7af131f482a4c82b6762d7f87 \
                            sha256  e7c8dc13af7db097bed64a051d2dd49e9f0af495c26995c00a9ee842690d34c0 \
                            size    164980

        patchfiles-append   patch-powerpc-2.0.2.diff

        python.pep517       no
        depends_build-append \
                            port:py${python.version}-setuptools
    }

    # cc1plus: error: unrecognized command line option "-std=gnu++11"
    compiler.cxx_standard 2011
    # Fails to build with Xcode compilers of 10.11 and earlier.
    compiler.blacklist-append {clang < 900}

    test.run            yes
    python.test_framework unittest

    livecheck.type      none
}
