# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:filetype=tcl:et:sw=4:ts=4:sts=4

PortSystem          1.0
PortGroup           python 1.0

name                py-lxml
version             6.1.1
revision            0
categories-append   devel
license             BSD
maintainers         {petr @petrrr} openmaintainer

description         Powerful and Pythonic XML processing library
long_description    lxml is a Pythonic binding for the libxml2 and \
                    libxslt libraries. It is unique in that it \
                    combines the speed and feature completeness of \
                    these libraries with the simplicity of a native \
                    Python API, mostly compatible but superior to \
                    the well-known ElementTree API.

homepage            https://lxml.de

checksums           rmd160 5ddf22486d693ef4d094882ddb649d856ba2fd36 \
                    sha256 ba96ae44888e0185281e937633a743ea90d5a196c6000f82565ebb0580012d40 \
                    size   4197430

python.versions     27 310 311 312 313 314

if {${subport} ne ${name}} {
    if {${python.version} == 27} {
        version     5.0.2
        revision    1
        checksums   rmd160  edd377fe2e214c69db4e468583ac507cf71853a7 \
                    sha256  6399703c40ba53e2c3b72fdb56cb908d2b83c08082ecf17de839b27e68d1e598 \
                    size    3862433

        depends_build-append \
                            port:py${python.version}-modulegraph

        # etree.c:27694:49: error: passing argument 1 of '__pyx_f_4lxml_5etree__fixThreadDictPtr' from incompatible pointer type [-Wincompatible-pointer-types]
        patchfiles-append   patch-etree.c.diff
    }

    # https://trac.macports.org/ticket/69386
    # As of 5.1.1, it does not build with gcc-4.2 anymore,
    # even if pragmas are patched out:
    # etree.h: error: wrong number of arguments specified for ‘__deprecated__’ attribute
    # Old Xcode clang of 10.6 also does not build it.
    # Build 5.0.2 with a modern compiler as well, to avoid patching out a lot of evil pragmas.
    compiler.blacklist-append \
                    {*gcc-[34].*} {clang < 421}

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

    depends_lib-append \
                    port:libxml2 \
                    port:libxslt \
                    port:zlib

    # https://trac.macports.org/ticket/56666
    patchfiles-append   patch-setupinfo-remove-xcrun-call.diff

    test.run        yes
    python.test_framework
    test.cmd        ${python.bin} src/lxml/tests/selftest.py
}
