# -*- 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.0.2
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           md5 ac9a945976227fd854d3e9e034e52ca1 \
                    rmd160 01f70a35c21374a333ea41f5ced7e529a21748f7 \
                    sha256 cd79f3367bd74b317dda655dc8fcfa304d9eb6e4fb06b7168c5cf27f96e0cd62 \
                    size   4073426

python.versions     27 37 38 39 310 311 312 313

if {${name} ne ${subport}} {
    if {${python.version} == 27} {
        version     5.0.2
        revision    0
        checksums   rmd160  edd377fe2e214c69db4e468583ac507cf71853a7 \
                    sha256  6399703c40ba53e2c3b72fdb56cb908d2b83c08082ecf17de839b27e68d1e598 \
                    size    3862433
    } elseif {${python.version} in "37 38"} {
        version     5.4.0
        revision    0
        checksums   rmd160  388615fe1ee020bdbc0fc6556a47a94843578e9d \
                    sha256  d12832e1dbea4be280b22fd0ea7c9b87f0d8fc51ba06e92dc62d52f804f78ebd \
                    size    3679479

        if {${python.version} == 38} {
            patchfiles-append   pyproject.toml.patch
        }
    }

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

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

    # https://trac.macports.org/ticket/56666
    patchfiles-append   patch-setupinfo-remove-xcrun-call.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.
    compiler.blacklist-append \
                    {*gcc-[34].*} {clang < 421}

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