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

# Need strnlen() and strndup()
PortGroup               legacysupport 1.0
legacysupport.newest_darwin_requires_legacy 10

github.setup            VirusTotal yara 4.5.8 v
github.tarball_from     archive
revision                0

categories              security
license                 GPL-2+
maintainers             nomaintainer

description             Malware identification and classification tool
long_description        YARA is a tool aimed at helping malware researchers to identify \
                        and classify malware samples.

checksums               rmd160  8568832a29abc044a7516a96b6d2ef0c423cdb19 \
                        sha256  c322414975ff6f701149856613afdcd92a7e6939c284c798ae3c85618197efaa \
                        size    2212218

if {${subport} eq ${name}} {
    depends_build-append \
                        port:autoconf \
                        port:automake \
                        port:libtool \
                        path:bin/pkg-config:pkgconfig

    depends_lib-append  port:libmagic \
                        port:jansson \
                        path:lib/libssl.dylib:openssl \
                        port:pcre \
                        port:protobuf-c

    patchfiles          patch-Makefile.am.diff

    pre-configure {
        system -W ${worksrcpath} "./bootstrap.sh"
    }

    # https://github.com/VirusTotal/yara/issues/1686
    configure.cflags-append -std=gnu99

    configure.args-append   --with-crypto \
                            --disable-silent-rules \
                            --disable-dependency-tracking \
                            --enable-cuckoo \
                            --enable-magic

    test.run            yes
    test.target         check

    github.livecheck.regex (\[0-9a-z.\]+)
}

set python.branches [list 3.10 3.11 3.12 3.13 3.14]

foreach b ${python.branches} {
    set python.branch          ${b}
    set python.version         [join [split ${python.branch} "."] ""]
    set python.bin             ${prefix}/bin/python${python.branch}
    set python.prefix          ${frameworks_dir}/Python.framework/Versions/${python.branch}

    subport py${python.version}-${name} {
        github.setup            VirusTotal yara-python 4.5.8 v
        github.tarball_from     archive
        revision                0

        categories              security python
        description             ${name} bindings for python ${python.branch}
        long_description        Malware identification and classification tool. \
                                This subport provides bindings for python ${python.branch}

        checksums       rmd160  9be827bf715c9af82fb70d65ce08b67325fa7e74 \
                        sha256  cdd9bbaa81f3995815a692dbc9c12d01495bf19dc69463b9848312623ca4d87e \
                        size    39578

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

        use_configure           no

        build.cmd               ${python.bin} setup.py --no-user-cfg
        build.target            build --dynamic-linking

        destroot.cmd            ${python.bin} setup.py --no-user-cfg
        destroot.destdir        --prefix=${python.prefix} --root=${destroot}

        pre-test {
            test.env-append     PYTHONPATH=[glob -nocomplain ${worksrcpath}/build/lib*]
        }

        test.run                yes
        test.cmd                ${python.bin} tests.py
        test.target
    }
}
