# -*- 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.4 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  973565c60ba4b36dcb62713b16656caa6175c8a4 \
                        sha256  586c9c21878f8b4d1b9423b89ac937f21f8057b03e3e9706f310549d453966fa \
                        size    2201555

if {${subport} eq ${name}} {
    depends_build-append \
                        port:autoconf \
                        port:automake \
                        port:libtool \
                        port:pkgconfig

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

    patchfiles          patch-configure.ac.diff \
                        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.9 3.10 3.11 3.12 3.13]

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.4 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  332912ea6edf0e91a15d98b18dbf798f6d8d579a \
                        sha256  7932922f661663d91ddac4f0f3fe6c290e7c4493d093b551df26939895d7f4e3 \
                        size    39313

        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
    }
}